|
|
Opublikowano1 minutę temu
|
|
|
|

Wymagania: Podczas żądania API uwzględniane są informacje o uwierzytelnianiu tokena JWT. Zaplecze musi zweryfikować, czy podpis tokena jest ważny, a następnie zweryfikować, czy on wygasł, informacje o emisji itd.
JSON Web Key Set URI
jwks_uri (JSON Web Key Set URI) to standardowy element konfiguracyjny w specyfikacjach OAuth 2.0 oraz OpenID Connect (OIDC).
Mówiąc wprost, jest to publiczny adres URL (lub punkt końcowy) wskazujący miejsce, gdzie serwer uwierzytelniania publikuje swój "zestaw kluczy publicznych". W standardowym procesie OIDC serwer uwierzytelniania dostarcza punkt końcowy wykrywania usług zawierający adres jwks_uri.
Jej popularna metafora
Jeśli JWT (lub Token Identyfikacyjny) wydany przez serwer uwierzytelniania jest porównywany do listu z fizycznym oficjalnym pieczęcią, to:
• Klucz prywatny: "Fizyczna pieczęć" zamknięta w sejfie przechowywanym przez serwer uwierzytelniający, używana do pieczątkowania (podpisywania). • jwks_uri: To jest sekcja "ujawnienia wzoru pieczęci" opublikowana na oficjalnej stronie internetowej przez serwer uwierzytelniający. • Aplikacja zewnętrznej (klient lub serwer zasobów): Po otrzymaniu e-maila pobierz projekt pieczęci (klucz publiczny) z tego jwks_uri adresu i porównaj go ze znaczkiem na liście, aby udowodnić, że list rzeczywiście został wydany przez oficjalną firmę i nie został zmanipulowany.
Tutaj znaczenie użycia w kolekcji kluczy jest następujące:
"sig": Podpis, używany do weryfikacji lub generowania podpisów w celu zapewnienia integralności danych i ochrony przed manipulacją. "enc": Szyfrowanie, wykorzystywane do szyfrowania lub odszyfroywania danych, a także do zarządzania kluczami (szyfrowanie kluczy) w celu zapewnienia poufności danych.
Jak pokazano poniżej:
Informacje o analizie JWT
Najpierw zainstaluj pakiet nuget:System.IdentityModel.Tokens.Jwt, odczytuje informacje o roszczeniach z jwt, kod jest następujący:
Wyniki są następujące:
Nosiciel 1059ec2e-ffa8-4ff5-bc47-f25d7e37aa5a
Zweryfikować ważność podpisu JWT
Najpierw musisz jednak odwołać się do pakietu System.IdentityModel.Tokens.Jwt. Istnieją dwa sposoby weryfikacji ważności podpisu.
Rozwiązanie 1: X.509 łańcuch certyfikatów
Deserializacja odbywa się zgodnie ze standardem X.509, wyodrębniając wszystkie ustrukturyzowane informacje z certyfikatu (takie jak klucz publiczny, emitent, data wygaśnięcia, numer seryjny itp.) oraz generując obiekt X509Certificate2. Na koniec uzyskiwany jest ukryty klucz publiczny RSA wewnątrz, aby zweryfikować token JWT. Kod wygląda następująco:
Jak pokazano poniżej:
Rozwiązanie 2: JsonWebKey
Przekonwertowanie na klucz bezpieczeństwa: Automatycznie identyfikuje typ algorytmu znajdujący się w środku. Następnie weryfikuje ważność tokena. Kod wygląda następująco:
(Koniec) |
Poprzedni:.NET/C# Uzyskaj właściwości, pola i komentarze obiektów na podstawie Roslyn
|