OAuth 2.0 offre molteplici modalità di autorizzazione, tra cui l'Authorization Code Grant è la più comunemente utilizzata e sicura. code_challenge è una funzione potenziata dalla sicurezza all'interno di questa modalità, utilizzata principalmente per il meccanismo PKCE (Proof Key for Code Exchange).
Cos'è il PKCE?
PKCE (Proof Key for Code Exchange) è un'estensione progettata per migliorare la sicurezza del modello di codice di autorizzazione OAuth 2.0, specialmente quando utilizzato in client pubblici come applicazioni JavaScript o app mobili in esecuzione nei browser. Il PKCE previene che i codici di autorizzazione vengano intercettati e usati in modo improprio aggiungendo un passaggio aggiuntivo di autenticazione alle richieste di autorizzazione.
code_challenge Ruolo
code_challenge fa parte del meccanismo PKCE, generato e inviato durante la fase di richiesta di autorizzazione. Si basa su un valore segreto (chiamato code_verifier), trasformato da un algoritmo di hashing come S256. Lo scopo di code_challenge è fornire una base di validazione per le richieste di token successive senza esporre direttamente il code_verifier.
Generazione e utilizzo di code_challenge e code_verifier
Generazione code_verifier: code_verifier è una stringa ad alta entropia generata casualmente,Lunghezza del carattere (tra 43 e 128). Il valore predefinito è 43。
Generazione code_challenge: Usando code_verifier, code_challenge viene generato tramite un algoritmo di hashing (come S256). Per S256, code_challenge è la codifica URL Base64 del valore hash code_verifier SHA-256, ma il carattere di riempimento = dalla codifica deve essere rimosso e la lunghezza di output deve essere di 43 caratteri (poiché dopo la codifica URL di Base64, ogni 4 caratteri rappresenta 3 byte, ma l'ultimo blocco di caratteri può essere inferiore a 4 caratteri, quindi la lunghezza può variare leggermente dopo la rimozione di = caratteri).
Usa code_challenge nelle richieste di autorizzazione: Quando si avvia una richiesta di autorizzazione, code_challenge viene inviata come uno dei parametri della richiesta al server di autorizzazione.
Utilizzo code_verifier nelle richieste di token: Quando il server di autorizzazione restituisce il codice di autorizzazione, il client utilizza questo codice insieme al code_verifier generato precedentemente per richiedere l'accesso all'endpoint del token. Il server di autorizzazione verifica se il code_challenge e code_verifier corrispondono, assicurandosi che la richiesta venga avviata dal client originale.
Generazione PKCE
Strumenti online per la generazione PKCE:Il login del link ipertestuale è visibile.
Il codice C# viene generato come segue:
Come mostrato di seguito:
Riferimento:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile. |