Pour utiliser les fonctionnalités Highly Regulated Identity, vous devez avoir un plan Enterprise avec le module complémentaire Highly Regulated Identity. Consultez Auth0 Pricing pour en savoir plus.
Prérequis
Avant d’utiliser JAR, vous devez :- Générer une paire de clés RSA
- Enregistrer la clé publique en la téléversant dans l’Auth0 Dashboard, comme décrit dans Configurer les requêtes d’autorisation sécurisées par JWT
Fonctionnement
Au lieu de transmettre des paramètres commescope ou redirect_uri en texte brut dans une URL, l’application cliente les regroupe dans un JSON Web Token (JWT) signé sous forme d’objet de requête :
- Signature : l’application cliente signe le JWT à l’aide de sa clé privée.
- Vérification : serveur d’autorisation Auth0 reçoit le JWT et vérifie la signature à l’aide de la clé publique que vous avez enregistrée.
- Traitement : s’il est valide, serveur d’autorisation Auth0 extrait les paramètres. Si un paramètre est présent à la fois dans le JAR et dans la chaîne de requête, la valeur du JAR a priorité.
Générer la requête JAR
Utilisez la bibliothèque JWT d’Auth0 pour générer un dans le langage de votre choix.En-tête
L’en-tête du JWT indique à Auth0 quelle clé et quel algorithme utiliser pour la vérification. Il doit contenir les paramètres suivants :alg: L’algorithme utilisé pour signer le JWT. Il doit s’agir de RS256, RS384 ou PS256.typ: Le type de JWT. Il doit s’agir dejwtou deoauth-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 ayant un ID de clé correspondant et utilisera cette clé pour vérifier la signature du JWT.
Payload
Le payload contient les paramètres d’autorisation. Il doit contenir les claims suivants :iss: doit contenir leclient_idde votre applicationaud: doit contenir le domaine de votre tenant, 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 le flux d’octroi de code d’autorisation.
audience, scope, state, redirect_uri, entre autres.
De plus, le JWT peut contenir les claims facultatifs suivants :
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
L’exemple Node.js suivant utilise la bibliothèque jsonwebtoken pour générer et signer un JAR :Appeler le point de terminaison d’autorisation
Vous pouvez envoyer le JAR au serveur d’autorisation Auth0 de la façon suivante :- requête JAR standard : transmettez le JWT signé sous forme de chaîne encodée dans l’URL dans le paramètre de requête.
- requête d’autorisation poussée : pour une sécurité accrue et pour éviter les contraintes de longueur d’URL, utilisez PAR.
Requête JAR standard
Pour appeler le point de terminaison/authorize au moyen 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 une URL dans le paramètrerequest.
Requête d’autorisation poussée
Pour effectuer une requête à l’endpoint/authorize avec une requête d’autorisation poussée :
- Envoyez le JAR à l’endpoint
/oauth/parau moyen d’une requêtePOSTsur le back-channel. - Auth0 renverra un
request_uri, que vous pourrez ensuite utiliser pour effectuer une requête à l’endpoint/authorize, comme dans un flux PAR standard.