Проблема создания и декодирования jwttokens с помощью Microsoft.IdentityModel.TokensC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблема создания и декодирования jwttokens с помощью Microsoft.IdentityModel.Tokens

Сообщение Anonymous »

Я хочу создать jwttoken с некоторыми утверждениями.
После этого я хочу проверить этот токен и получить объект ClaimsPrincipal.
Я использую следующие библиотеки:

Код: Выделить всё

using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
Вот код, который генерирует мой токен

Код: Выделить всё

var handler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(AuthSettings.PrivateKey);
var credentials = new SigningCredentials(
new SymmetricSecurityKey(key),
SecurityAlgorithms.HmacSha256Signature);

var claims = new List
{
new(JwtRegisteredClaimNames.Sub, user.Username),
new(JwtRegisteredClaimNames.Jti, user.ID.ToString()),
new(JwtRegisteredClaimNames.NameId, user.ID.ToString()),
new(ClaimTypes.NameIdentifier, user.ID.ToString()),
new(ClaimTypes.Role, user.UserPermitionLevel.ToString()),

};
var identity = new GenericIdentity(user.Username);
var claimsidentity = new ClaimsIdentity(identity, claims);
DateTime.UtcNow.AddMinutes(AuthSettings.ExpiryMinutes).ToString())
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = claimsidentity,
Expires = DateTime.UtcNow.AddMinutes(AuthSettings.ExpiryMinutes),
SigningCredentials = credentials,
};

var token = handler.CreateToken(tokenDescriptor);
var tk = handler.WriteToken(token);

var res1 = handler.ReadJwtToken(tk);
var res2 = handler.ReadToken(tk);

return handler.WriteToken(token);
Сгенерированный токен:

Код: Выделить всё

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Ik1GSSIsInN1YiI6Ik1GSSIsImp0aSI6IjEiLCJuYW1laWQiOlsiMSIsIjEiXSwicm9sZSI6IkFkbWluIiwibmJmIjoxNzI2MjEwOTA5LCJleHAiOjE3MjYyMTI3MDksImlhdCI6MTcyNjIxMDkwOX0.GHTv_n6W4M6qftQ2myv8vvLg8AqvUf40dG2e5_pZBlo
Полезная нагрузка:

Код: Выделить всё

{
"unique_name": "MFI",
"sub": "MFI",
"jti": "1",
"nameid": [
"1",
"1"
],
"role": "Admin",
"nbf": 1726210909,
"exp": 1726212709,
"iat": 1726210909
}
Выглядит неплохо.
Когда я сейчас читаю этот токен с помощью handler.ReadToken(tk) или с помощью handler.ReadJwtToken (tk) полезная нагрузка содержит только 4 элемента.
Изображение

Утверждения также содержат только те же 4 элемента.
Я не понимаю, в чем я ошибаюсь.
Я много гуглил и использовал чат-gpt, но Wars не смог решить проблему самостоятельно.
Можете ли вы мне помочь?

Подробнее здесь: https://stackoverflow.com/questions/789 ... del-tokens
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Тип SecurityTokenDescriptor существует как в Microsoft.IdentityModel.Tokens, Version=5.6.0.0, так и в Microsoft.Identity
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Зачем IsNullOrEmpty проверять перечислимую часть Microsoft.IdentityModel.Tokens?
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Не удалось загрузить файл или сборку «Microsoft.IdentityModel.Tokens — проблема».
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • IDX10511: проверка подписи не удалась. Ключи проверены: «Microsoft.IdentityModel.Tokens.X509SecurityKey».
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Метод не найден: 'Boolean Microsoft.IdentityModel.Tokens.TokenUtilities.IsRecoverableConfiguration
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»