Pour utiliser les fonctionnalités Highly Regulated Identity, vous devez disposer d’un plan Enterprise avec l’option Highly Regulated Identity. Consultez Auth0 Pricing pour en savoir plus.
Prérequis
- Générer une paire de clés RSA
- Enregistrer la clé publique en la téléversant dans Auth0 Dashboard, comme décrit dans Configurer les requêtes d’autorisation sécurisées par JWT
Fonctionnement
scope ou redirect_uri en texte brut dans une URL, l’application cliente les regroupe dans un JSON Web Token (JWT) signé, qui sert d’objet de requête :
- Signature : l’application cliente signe le JWT à l’aide de sa clé privée.
- Vérification : le serveur d’autorisation Auth0 reçoit le JWT et en vérifie la signature à l’aide de la clé publique que vous avez enregistrée.
- Traitement : s’il est valide, le serveur d’autorisation Auth0 extrait les paramètres. Si un paramètre existe à la fois dans le JAR et dans la chaîne de requête, la valeur du JAR prévaut.
Générer la requête JAR
En-tête
alg: L’algorithme utilisé pour signer le JWT. Il doit être RS256, RS384 ou PS256.typ: Le type de JWT. Il doit êtrejwtouoauth-authz-req+jwt.
kid qui identifie la clé utilisée pour signer le JWT. Si un kid est présent, Auth0 recherchera une clé publique enregistrée lors de la configuration de JAR dont l’ID de clé correspond, et utilisera cette clé pour vérifier la signature du JWT.
Payload
iss: doit contenir leclient_idde votre applicationaud: doit correspondre au Domaine de votre locataire, avec le protocole et une barre oblique à la fin. Par exemple,https://{YOUR_DOMAIN}.auth0.com/
/authorize. Par exemple :
client_id: doit aussi contenir leclient_idde votre applicationresponse_type: indique à Auth0 quel flux vous voulez utiliser. Utilisezcodepour Authorization Code Grant Flow.
audience, scope, state, redirect_uri, entre autres.
De plus, le JWT peut contenir les claims facultatives suivantes :
iat: doit être une date numérique.nbf: doit être une date numérique représentant un moment dans le passé.exp: doit être une date numérique représentant un moment dans l’avenir.jti: doit être une chaîne d’au plus 64 octets.
Exemple de code : générer et signer un JAR
- Requête JAR standard : transmettez le JWT signé sous forme de chaîne encodée pour l’URL dans le paramètre de requête.
- requête d’autorisation poussée : pour renforcer la sécurité et éviter les contraintes de longueur d’URL, utilisez PAR.
Requête JAR standard
/authorize à l’aide d’une requête JAR standard :
- Ouvrez une nouvelle fenêtre de navigateur.
- Fournissez votre dans le paramètre
client_id, et le JWT signé et encodé pour l’URL dans le paramètrerequest.
/authorize avec une requête d’autorisation poussée :
- Envoyez le JAR au point de terminaison
/oauth/parau moyen d’une requêtePOSTsur le canal arrière. - Auth0 renverra un
request_uri, que vous pourrez ensuite utiliser pour appeler le point de terminaison/authorize, comme dans un flux PAR standard.