Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 (або ідентифікаційний токен), виданий сервером автентифікації, порівнюється з листом із офіційною печаткою, тоді:

• Приватний ключ: «фізична пломба», заблокована в сейфі, що зберігається сервером автентифікації, і використовується для штамповки (підписання).
• 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

Конвертація у Ключ Безпеки: Він автоматично ідентифікує тип алгоритму всередині. Потім перевіряйте валідність токена. Код виглядає так:
(Кінець)




Попередній:.NET/C# Отримуйте властивості об'єкта, поля та коментарі на основі Roslyn
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com