У меня есть React Front end, использующий библиотеку msal для аутентификации клиентской части пользователя с нашей Azure AD. Это прекрасно работает, и аутентификация не имеет проблем. У меня также есть ASP. Net Core WebApi для предоставления данных клиенту. Я использую JwtTokens для передачи Bearer token
в запросе. WebApi может проверять токен, и все в порядке ... Однако я подумал, что когда метод WebApi вызывается, единственный способ получить электронную почту или имя пользователя - запросить User.Claims с помощью Linq.
this.User.Claims.Where(c=> c.Type == "preferred_username").FirstOrDefault().Value
Я собирался go по пути отображения этих запросов linq на объект, который может быть введен в контроллер WebApi, но это кажется неправильным.
Я явно что-то упускаю в своем Startup.cs для WebApi. Любая помощь или предложения будут великолепны !:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
//add authentication JwtBearer Scheme
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.Audience = Configuration["JwtSettings:Audience"];
options.Authority = Configuration["JwtSettings:Authority"];
options.Events = new JwtBearerEvents
{
OnTokenValidated = ctx =>
{
//log
return Task.CompletedTask;
},
OnAuthenticationFailed = ctx =>
{
//log
return Task.CompletedTask;
}
};
options.SaveToken = true;
});
services.AddAuthorization();
// In production, the React files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
}