Проблема 1
У меня в тестовой среде есть небольшой инструмент, который я могу использовать для генерации токенов, однако кажется, что мой ключ безопасности слишком мал для HmacSha256Signature. Когда это было создано более двух лет назад, наш секрет был очень мал. Это код, который нам нужен для создания нового токена

Я знаю, что мой секрет преобразования из base64 составляет 24 бита. Кто-нибудь знает, было ли это изменено или это ошибка, которую Microsoft впоследствии исправила. Было бы лучше преобразовать ключ (который находится в нашем файле веб-конфигурации API) в строку base64, а затем преобразовать ее в байты? Пример ниже:
Код: Выделить всё
// Secret is a base64 string
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Secret));
ClaimsIdentity claimsIdentity = new ClaimsIdentity(Claims);
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
SecurityTokenDescriptor descriptor = new SecurityTokenDescriptor
{
Audience = Audience,
Issuer = Issuer,
Subject = claimsIdentity,
SigningCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature),
IssuedAt = DateTime.UtcNow
};
if (ExpiryDate.HasValue)
{
descriptor.Expires = ExpiryDate;
}
else
{
handler.SetDefaultTimesOnTokenCreation = false;
}
JwtSecurityToken token = handler.CreateJwtSecurityToken(descriptor);
return handler.WriteToken(token);
Проблема 2
При попытке протестировать наш API мы постоянно терпим неудачу при проверке передаваемого токена, в частности при попытке получить утверждения Принцип.

Мы постоянно получаем сообщение об ошибке: ключ отсутствует. Я также предполагаю, что из-за того, что мы не можем создать токен из-за слишком маленького размера ключа безопасности, у нас также может возникнуть эта проблема. Я подумываю сделать что-то подобное при создании токена, поэтому эту часть менять не нужно.
Код: Выделить всё
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Secret));
securityKey.KeyId = NewID;
ClaimsIdentity claimsIdentity = new ClaimsIdentity(Claims);
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... 27-to-8-15
Мобильная версия