|
|
Публикувано вПреди 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
|