Как сбросить разобранный токен JWT в ASP.NET Ядро?

#c# #asp.net-core #jwt

Вопрос:

Я пишу API в .NET Core, который анализирует токен JWT, выпущенный компанией Keycloak .

Этот знак очень разнообразен. Пользовательские клиамы представлены с различными типами форматов данных и вложений.

Я использую Microsoft.AspNetCore.Authentication.JwtBearer в качестве зависимости NuGet для этой цели, и я хотел бы иметь следующий контроллер для сброса входящего токена:

 [HttpGet]
public object Dump(string token)
{
   // token is what I have taken from the `Authorizaiton: Bearer token` HTTP header
   // How can I find out how .NET parses this token? I want the object model. I want the parsed token here.
}
 

Как я могу это получить?

Комментарии:

1. Можете ли вы поделиться token тем, как выглядит стоимость?

2. Токен JWT-это строка, на которую вы можете разделить . . Первая часть-заголовок, вторая-полезная нагрузка, а третья-Подпись… отдельные части вы можете дополнительно декодировать base64, и это даст вам строку JSON, которую вы можете сохранить или десериализовать в соответствующий объект класса.

Ответ №1:

Используйте метод JwtSecurityTokenHandler класса ValidateToken , который возвращает ClaimsPrincipal значение, содержащее утверждения токена.

Комментарии:

1. Я посмотрел на этот метод, и он требует множества параметров. Я уже настроил .NET для анализа этого токена. Что я хочу, так это увидеть проанализированную модель и сбросить ее в файл журнала.

2. Например, User.Identity.IsAuthenticated возвращает значение true или false в зависимости от действительности токена. Я хочу что-то вроде HttpContext.ParsedToken . Keycloak keycloak.js обладает двумя свойствами: keycloak.token и keycloak.parsedToken . Второй дает вам объектную модель токена.