Майкрософт.AspNetCore.Маркер носителя аутентификации добавляет роли после аутентификации

#asp.net-core #.net-5 #microsoft-identity-web

Вопрос:

Я перехожу из приложения .NET Framework, которое использует Microsoft.Owin.Security.ActiveDirectory библиотеки для проверки подлинности токенов-носителей, в .NET 5, который использует Microsoft.AspNetCore.Authentication библиотеки.

Мой старый код выглядит следующим образом:

         app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = ConfigurationManager.AppSettings["AzureActiveDirectoryTenant"],
                TokenValidationParameters = new TokenValidationParameters
                {
                    ValidAudience = ConfigurationManager.AppSettings["AzureActiveDirectoryAudience"]
                },
                Provider = new AzureOAuthBearerAuthenticationProvider(container.Resolve<IUserService>())
            });
 

Затем я реализую OAuthBererAuthenticationProvider функцию, которая прикрепляет претензии к пользователю.

 public class AzureOAuthBearerAuthenticationProvider : OAuthBearerAuthenticationProvider
{
    public AzureOAuthBearerAuthenticationProvider(IUserService userService)
    {
        OnValidateIdentity = async (context) =>
        {
            var userPrincipalName = context.Ticket.Identity.Name;
            var roles = await userService.GetRolesForUserAsync(userPrincipalName);
            context.Ticket.Identity.AddClaims(roles);
        };
    }
}
 

Мой новый код выглядит следующим образом:

     public void ConfigureServices(IServiceCollection services)
    {

        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApi(Configuration.GetSection("AzureAd"));
     }
 

Это работает для проверки подлинности токенов, передаваемых в API. Однако роли не распределяются. Как мне изменить эту конфигурацию, чтобы я мог присоединять свои роли пользователей?