Я генерирую токены 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
Почему мой токен JWT не может быть проверен после его создания? .NET 8.0 ⇐ C#
Место общения программистов C#
1715712887
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);
Подробнее здесь: [url]https://stackoverflow.com/questions/78479396/why-cant-my-jwt-token-be-validated-after-it-has-been-created-net-8-0[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия