Обновление Micorsoft.IdentityModel.Tokens с 6.27 до 8.15C#

Место общения программистов C#
Ответить
Anonymous
 Обновление Micorsoft.IdentityModel.Tokens с 6.27 до 8.15

Сообщение Anonymous »

Я пытаюсь обновить все наши устаревшие пакеты Nuget, один из которых — модель идентификации. Мы используем это для генерации и проверки токена jwt. У меня возникли некоторые проблемы, и мне интересно, может ли кто-нибудь указать правильное направление изменений между всеми версиями, чтобы я мог попытаться выяснить, что нуждается в обновлении.
Проблема 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);
Я считаю, что Encoding.UTF8.GetBytes(Secret) выдает 32 бита, что, я думаю, поможет, но я не уверен, что это правильный путь.
Проблема 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
Ответить

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

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

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

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

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