#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. Однако роли не распределяются. Как мне изменить эту конфигурацию, чтобы я мог присоединять свои роли пользователей?