【发布时间】:2019-08-02 22:55:52
【问题描述】:
我们正在将 Azure Active Directory 与 React Web 应用程序集成,后端将是 .net core 2.2 API。
当前状态:我们可以将 React Web 应用程序的应用程序注册添加到 Azure AD。这样,我们就可以在 React Web 应用成功认证后进行认证并获取 Bearer 令牌。
我面临的挑战:由于已完成身份验证,我想使用 Bearer 令牌在后端 .net 核心 API 上执行 授权。但是,我无法成功,因为我不断收到以下错误。
InvalidOperationException: 没有指定 authenticationScheme,也没有找到 DefaultChallengeScheme。谁能帮忙解决这个问题?
.net core api 项目的代码 sn-p:
在启动文件中:ConfigureServices(IServiceCollection services) 方法。
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministratorRole",
policy =>
{
policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme);
policy.AddRequirements(new AdminRequirement());
policy.RequireAuthenticatedUser();
policy.RequireRole("Admin");
});
});
services.AddSingleton<IAuthorizationHandler, AdminHandler>();
在配置中(IApplicationBuilder 应用程序,IHostingEnvironment env):
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMvc();
和 AuthenticationHandler:
public class AdminHandler : AuthorizationHandler<AdminRequirement>, IAuthorizationRequirement
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AdminRequirement requirement)
{
//Check user claims for Role
if (context.User.HasClaim(ClaimTypes.Role, "Admin"))
{
context.Succeed(requirement);
}
return Task.FromResult(0);
}
}
【问题讨论】:
标签: .net-core azure-active-directory bearer-token role-base-authorization