Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 2|Отговор: 0

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

[Копирай линк]
Публикувано вПреди 1 минута | | | |
Изисквания: При заявка за API ще бъде включена информация за удостоверяване на JWT токен. Бекендът трябва да провери дали подписът на токена е валиден, след това дали е изтекъл, информацията за емитирането и т.н.

JSON Web Key Set URI

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": Криптиране, използвано за криптиране или декриптиране на данни, както и за управление на ключове (Key Encryption) с цел гарантиране на поверителността на данните.

Както е показано по-долу:



Информация за анализ на 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