Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 2|Ответ: 0

[Источник] .NET/C# Два метода проверки достоверности подписи токена JWT

[Скопировать ссылку]
Опубликовано1 минута назад | | | |
Требования: При запросе API будет включена информация об аутентификации токена JWT. Бэкенд должен проверить, валидна ли подпись токена, затем проверить, истёк ли её, информацию о выпуске и т.д.

URI веб-набора ключей JSON

jwks_uri (JSON Web Key Set URI) является стандартным элементом конфигурации в спецификациях OAuth 2.0 и OpenID Connect (OIDC).

Проще говоря, это публичный URL-адрес (или конечная точка), указывающий на место, где сервер аутентификации публикует свой «набор открытых ключей». В стандартном процессе OIDC сервер аутентификации предоставляет конечную точку обнаружения сервиса, содержащую адрес jwks_uri.

Её популярная метафора

Если JWT (или ID Token), выпущенный сервером аутентификации, сравнится с буквой с официальной печатью, тогда:

• Приватный ключ: «физическая пломба», запертая в сейфе, хранящемся на сервере аутентификации, используемая для печати (подписи).
• jwks_uri: Это раздел «раскрытия узоров печати», размещённый на официальном сайте сервером аутентификации.
• Стороннее приложение (клиент или сервер ресурсов): после получения письма скачайте дизайн печати (публичный ключ) с этого jwks_uri адреса и сравните его с штампом на письме, чтобы доказать, что письмо действительно было выпущено официальной компанией и не подвергалось вмешательству.

Здесь значение использования в коллекции ключей таково:

"sig": Подпись, используемая для проверки или генерации сигнатур с целью обеспечения целостности данных и защиты от подделок.
"enc": шифрование, используемое для шифрования или расшифровки данных, а также для управления ключами (шифрование ключей) для обеспечения конфиденциальности данных.

Как показано ниже:



Информация о разборе JWT

Сначала установите пакет nuget:System.IdentityModel.Tokens.Jwt, гласит информацию о претензиях из jwt, код выглядит следующим образом:

Результат выглядит следующим образом:
Носитель
1059EC2E-FFA8-4FF5-BC47-F25D7E37AA5A

Проверьте достоверность подписи JWT

Сначала нужно обратиться к пакету System.IdentityModel.Tokens.Jwt. Существует два способа проверить достоверность подписи.

Решение 1: цепочка сертификатов X.509

Десериализация выполняется в соответствии с международным стандартом X.509, извлекая всю структурированную информацию из сертификата (такую как открытый ключ, эмитент, дата истечения срока действия, серийный номер и т.д.) и генерируя объект X509Certificate2. Наконец, скрытый открытый ключ RSA внутри получается для проверки токена JWT. Код выглядит следующим образом:
Как показано ниже:



Решение 2: JsonWebKey

Конвертировать в Security Key: Он автоматически определяет тип алгоритма внутри. Затем проверяется валидность токена. Код выглядит следующим образом:
(Конец)




Предыдущий:.NET/C# Получите свойства объекта, поля и комментарии на основе Roslyn
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com