Почему мой токен JWT не может быть проверен после его создания? .NET 8.0C#

Место общения программистов C#
Ответить
Anonymous
 Почему мой токен JWT не может быть проверен после его создания? .NET 8.0

Сообщение Anonymous »

Я генерирую токены JWT в своем API .NET8 для выдачи при входе пользователя в систему.
Логика, которая обрабатывает генерацию токена, по-видимому, может генерировать действительный токен при тестировании в jwt.io, однако непосредственно после создания токена я пытаюсь проверить его, используя те же параметры проверки, которые содержатся в моем классе program.cs. и получите следующее исключение:

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidIssuerException: IDX10211: невозможно проверить эмитента. Параметр 'issuer' имеет значение null или пробел

Похоже, что декодер не может найти утверждение iss: в моих полезных данных, хотя оно определенно присутствует внутри jwt.io
Код токена –
var authConfig = new JwtConfig();
_configuration.GetSection("JwtConfig").Bind(authConfig);

var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authConfig.Key));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var userClaims = new List
{
new(ClaimTypes.NameIdentifier, input.Id.ToString()),
new(ClaimTypes.Name, input.Name),
new(ClaimTypes.Email, input.Email)
};

foreach (var role in input.Roles)
{
userClaims.Add(new(ClaimTypes.Role, role));
}

var tokenConfig = new JwtSecurityToken(
issuer: authConfig.Issuer,
audience: authConfig.Audience,
claims: userClaims,
expires: DateTime.UtcNow.AddMinutes(authConfig.JwtTimeoutInMinutes),
signingCredentials: credentials);

var token = new JwtSecurityTokenHandler().WriteToken(tokenConfig);

// temporary testing
var handler = new JwtSecurityTokenHandler();
var validation = new TokenValidationParameters
{
ValidIssuer = "https://localhost:7208",
ValidAudience = "https://localhost:7208",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("82551957-F31C-465F-895F-99DD9B40507C")),
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true
};

SecurityToken validatedToken;

var test1 = handler.ReadJwtToken(token);

var test = handler.ValidateToken(token, validation, out validatedToken);


Подробнее здесь: https://stackoverflow.com/questions/784 ... ed-net-8-0
Ответить

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

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

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

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

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