Как я могу получить доступ к токену JWT неявно в .Net Core 2.1? - PullRequest
0 голосов
/ 09 ноября 2019

Я начинаю узнавать о JWT и разрабатываю угловое приложение, которое использует Firebase для аутентификации пользователей.

Поскольку токен JWT отправляется в запросах, требующих авторизации, мне было интересно, могу ли я получить к нему доступи как-то декодировать его без явной установки его в качестве параметра?

Вот код, который использует JWT для авторизации

[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
        //How can i acces the JWT token and decode it to get the user uid?
}

1 Ответ

0 голосов
/ 09 ноября 2019

Как я могу получить доступ к токену JWT и декодировать его, чтобы получить пользовательский идентификатор?

Я не понимаю, зачем вам нужен токен JWT, чтобы получитьидентификатор пользователя, потому что объект HttpContext уже выставляет текущий principal для запроса как свойство User. Ядро ASP.NET также не отправляет токен JWT при каждом запросе. Он отправляет зашифрованный куки-файл аутентификации, который был создан при входе пользователя, и просто содержит утверждения из этого токена JWT.

principal - текущий пользователь, реализованный как ClaimsPrincipal. Он содержит коллекцию утверждений, описывающих указанного пользователя, и содержит идентификатор пользователя, а также другие утверждения, полученные от поставщика удостоверений.

Если мы находимся в контроллере, который наследуется от базовых классов Controller и ControllerBaseтогда мы можем получить доступ к принципалу пользователя следующим образом:

[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
        var userId =  User.FindFirstValue(ClaimTypes.NameIdentifier);
}
...