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
- 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
scope 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
En-tête
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
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
- 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
/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.
/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.