0

我正在从使用Microsoft.Owin.Security.ActiveDirectory库对承载令牌进行身份验证的 .NET Framework 应用程序迁移到使用这些Microsoft.AspNetCore.Authentication库的 .NET 5。

我的旧代码如下:

        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 的令牌。但是,没有附加任何角色。如何修改此配置以便附加我的用户角色?

4

0 回答 0