Подключите мой JWT к IHttpContextAccessor.User .NET Core. - PullRequest
0 голосов
/ 26 октября 2019

У меня есть JWT, который отправляется в заголовке с ключом " X-JWT-Assertion ".

Он приходит очень хорошо. Я могу успешно проверить его, используя IAuthorizationFilter.

. Затем я вставляю IHttpContextAccessor в свой контроллер и проверяю свойство User (a System.Security.Claims.ClaimsIdentity). В нем нет претензий, несмотря на то, что у моего JWT много претензий.

Я предполагаю, что мой WSO2-сервер отправляет JWT с нестандартным именем заголовка, поэтому код .NET Core не знает о его наличии.

Я мог бы просто получить доступ к JWT вручную, чтобы получить свои претензии, но я бы предпочел использовать встроенные методы .NET.

Есть ли возможность подключить мой JWT кIHttpContextAccessor.User объект?

1 Ответ

2 голосов
/ 26 октября 2019

Во-первых, вам не нужно вводить IHttpContextAccessor в свой контроллер для доступа к пользователю. Controller уже имеет свойство User.

Во-вторых, вам нужно добавить аутентификацию jwt в startup.cs и затем изменить способ чтения токена с помощью событий.

services.AddAuthentication()
    .AddJwtBearer(configureOptions =>
    {
        configureOptions.Events.OnMessageReceived = context =>
        {
            context.Token = context.HttpContext.Request.Headers["X-JWT-Assertion"];
            return Task.CompletedTask;
        };
    });  
...