HttpContext.Principal не совпадает с JWT Bearer Token Passed - PullRequest
0 голосов
/ 05 марта 2020

Здесь чертовски много времени ...

Страница входа вызывает службу "GateWay", которая возвращает токен Jwt. Этот токен впоследствии передается в WebApi в качестве носителя в заголовке.

В WebApi мне нужно сделать две вещи:

  1. Использовать токен носителя в атрибуте CustomAutorication для проверки пользователь может выполнить запрошенное действие.

  2. Использовать утверждения из маркера-носителя в методах контроллера WebApi для управления доступом к данным.

У меня проблема в том, что actionContext.ControllerContext.RequestContext.Principal не устанавливается на основе токена Jwt Bearer.

Я могу прочитать токен, используя следующее, и он работает нормально:

// Read JWT Token
var handler = new JwtSecurityTokenHandler();
_token = handler.ReadJwtToken(token);

int ProfileId = int.Parse(_token.Claims.FirstOrDefault(c => c.Type == "ProfileId").Value);

Но если я попытаюсь получить к нему доступ, используя:

IPrincipal user = actionContext.ControllerContext.RequestContext.Principal;

У пользователя нет претензий.

WTF здесь происходит? В идеале я бы хотел использовать пользователя IPrinicpal, чтобы можно было легко использовать утверждения в моих контроллерах.

...