OAuth 2.0 propose plusieurs modes d’autorisation, parmi lesquels l’Authorization Code Grant est le plus couramment utilisé et sécurisé. code_challenge est une fonctionnalité renforcée en sécurité dans ce mode, principalement utilisée pour le mécanisme PKCE (Proof Key for Code Exchange).
Qu’est-ce que le PKCE ?
PKCE (Proof Key for Code Exchange) est une extension conçue pour renforcer la sécurité du schéma de code d’autorisation OAuth 2.0, en particulier lorsqu’il est utilisé dans des clients publics tels que des applications JavaScript ou mobiles fonctionnant dans des navigateurs. PKCE empêche que les codes d’autorisation soient interceptés et mal utilisés en ajoutant une étape supplémentaire d’authentification aux demandes d’autorisation.
code_challenge Rôle
code_challenge fait partie du mécanisme PKCE, généré et envoyé lors de la phase de demande d’autorisation. Il est basé sur une valeur secrète (appelée code_verifier), transformée par un algorithme de hachage tel que S256. Le but de code_challenge est de fournir une base de validation pour les requêtes de jeton ultérieures sans exposer directement le code_verifier.
Génération et utilisation de code_challenge et code_verifier
Génération code_verifier : code_verifier est une chaîne à haute entropie, générée aléatoirement,Longueur du caractère (entre 43 et 128). La valeur par défaut est 43。
Génération code_challenge : En utilisant code_verifier, code_challenge est généré via un algorithme de hachage (tel que S256). Pour S256, code_challenge’est l’encodage URL Base64 de la valeur de hachage code_verifier SHA-256, mais le caractère de remplissage = du codage doit être supprimé, et la longueur de sortie doit être de 43 caractères (puisqu’après l’encodage URL Base64, chaque 4 caractères représente 3 octets, mais le dernier bloc de caractères peut être inférieur à 4 caractères, donc la longueur peut varier légèrement après suppression = caractères).
Utilisez code_challenge dans les demandes d’autorisation : Lors de l’initiation d’une demande d’autorisation, code_challenge est envoyée comme l’un des paramètres de la requête au serveur d’autorisation.
Utilisation code_verifier dans les requêtes de jetons : Lorsque le serveur d’autorisation retourne le code d’autorisation, le client utilise ce code avec la code_verifier générée précédemment pour demander l’accès au point d’arrivée du jeton. Le serveur d’autorisation vérifie si le code_challenge et le code_verifier correspondent, garantissant que la requête est initiée par le client d’origine.
Génération PKCE
Outils de génération PKCE en ligne :La connexion hyperlientérée est visible.
Le code C# est généré comme suit :
Comme montré ci-dessous :
Référence:
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible. |