Мы интегрируем Azure Active Directory с веб-приложением React, а бэкэнд будет .NET core 2.2 API.
Текущий статус: мы можем добавить регистрацию приложения для веб-приложения React в Azure AD. Благодаря этому мы смогли выполнить аутентификацию и получить токен Bearer после успешной аутентификации в реагирующем веб-приложении.
Проблемы, с которыми я сталкиваюсь: поскольку аутентификация выполнена, я бы хотел выполнить Авторизацию в базовом API Backend .net с использованием токена Bearer. Однако я не смог добиться успеха, так как я получаю следующую ошибку.
InvalidOperationException: не указана схема authenticationScheme, и не найден DefaultChallengeScheme. Может ли кто-нибудь помочь решить эту проблему?
Фрагмент кода из проекта .net core api:
в файле запуска: метод 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>();
В Configure (приложение IApplicationBuilder, среда IHostingEnvironment):
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);
}
}