#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
. Keycloakkeycloak.js
обладает двумя свойствами:keycloak.token
иkeycloak.parsedToken
. Второй дает вам объектную модель токена.