ASP. Net Идентификация ядра с помощью JwtBearer AuthenticationScheme сопоставляет утверждения с контекстным объектом User. - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть 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";
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...