如何解决查询Web API时为什么会出现“ 401未经授权”的问题?
我有一个Angular应用程序和一个用.NET Core构建的单独的Web API解决方案。我已成功使用Azure AD B2C设置身份验证。我能够登录到角度应用程序。我已经配置了客户端应用程序,并且确定要保护以下资源:http:// localhost / api / Profile / GetProfile。
当我导航到应用程序中的配置文件路由时,我收到一个id_token和一个access_token。尝试从ClientApp进行api调用时,我得到401未经授权。但是,我可以在新标签页中(我的应用程序外部)成功打开该网址。我正试图达到相反的目的。也就是说,当未登录时应从浏览器输入401,而从ClientApp登录应为200。我在做什么错了?
这是我要在Startup.cs中添加的内容:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(Configuration,"AzureAdB2C");
然后我下来:
app.UseAuthentication();
app.UseStaticFiles();
我在控制器中添加了以下内容:
[Authorize]
解决方法
尝试添加授权。
- 在
ConfigureServices(IServiceCollection services)
方法中
services.AddAuthorization();
// You can pass option if requires,for example
services.AddAuthorization(options =>
{
options.AddPolicy("Admin",policy => policy.RequireClaim("Role","Admin"));
});
In that case,in controller use
[Authorize(Policy="Admin")]
- 同样在
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
方法中。
app.UseAuthorization();
app.UseAuthentication();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。