|
|
Postat peAcum 1 minut
|
|
|
|

Cerințe: La solicitarea unui API, informațiile de autentificare ale tokenului JWT vor fi incluse. Backend-ul trebuie să verifice dacă semnătura tokenului este validă, apoi să verifice dacă a expirat, informațiile de emitere etc.
URI-ul setului de chei web JSON
jwks_uri (JSON Web Key Set URI) este un element standard de configurație în specificațiile OAuth 2.0 și OpenID Connect (OIDC).
Pe scurt, este o adresă URL publică (sau un punct final) care indică locul unde serverul de autentificare publică "setul său de chei publice". În procesul standard OIDC, serverul de autentificare oferă un endpoint de descoperire a serviciului care conține adresa jwks_uri.
Metafora sa populară
Dacă JWT-ul (sau ID-Token-ul) emis de serverul de autentificare este comparat cu o scrisoare ștampilată cu un sigiliu oficial fizic, atunci:
• Cheia privată: "Sigiliul fizic" blocat în seiful deținut de serverul de autentificare, folosit pentru ștampilare (semnare). • jwks_uri: Aceasta este "secțiunea de dezvăluire a modelului sigiliului" postată pe site-ul oficial de către serverul de autentificare. • Aplicație terță parte (client sau server de resurse): După ce primești emailul, descarcă designul sigiliului (cheia publică) de la această adresă jwks_uri și compară-l cu ștampila de pe scrisoare pentru a demonstra că scrisoarea a fost într-adevăr emisă de compania oficială și nu a fost modificată.
Aici, sensul utilizării în colecția de chei este:
"sig": Semnătură, folosită pentru a verifica sau genera semnături pentru a asigura integritatea datelor și protecția imposibil de manipulare. "enc": Criptare, folosită pentru a cripta sau decripta date, precum și pentru a gestiona cheile (Criptarea cheilor) pentru a asigura confidențialitatea datelor.
Așa cum se arată mai jos:
Analizează informațiile JWT
Mai întâi, instalează pachetul Nuget:System.IdentityModel.Tokens.Jwt, citește informațiile despre cereri din JWT, codul fiind următorul:
Rezultatul este următorul:
Purtător 1059ec2e-ffa8-4ff5-bc47-f25d7e37aa5a
Verifică validitatea semnăturii JWT
Tot trebuie să faci referire la pachetul System.IdentityModel.Tokens.Jwt. Există două moduri de a verifica validitatea semnăturii.
Soluția 1: Lanțul de certificate X.509
Deserializarea se realizează conform standardului internațional X.509, extragând toate informațiile structurate din certificat (cum ar fi cheia publică, emitentul, data de expirare, numărul de serie etc.) și generarea unui obiect X509Certificate2. În final, cheia publică RSA ascunsă din interior este obținută pentru a verifica tokenul JWT. Codul este următorul:
Așa cum se arată mai jos:
Soluția 2: JsonWebKey
Convertește în Cheia de Securitate: Identifică automat tipul algoritmului din interior. Apoi, verifică validitatea tokenului. Codul este următorul:
(Sfârșit) |
Precedent:.NET/C# Obține proprietățile obiectului, câmpurile și comentariile bazate pe Roslyn
|