- Un risque accru d’interception et de réutilisation, puisque les secrets client doivent être transmis entre les parties à chaque requête.
- Des mécanismes limités pour appliquer une date d’expiration et empêcher la réutilisation par des acteurs malveillants.
- Un risque accru de fuite ou d’exposition puisque les deux parties détiennent le secret client.
Fonctionnement
/oauth/token ou /oauth/par pour vérifier l’identité d’une application auprès du ou du fournisseur OpenID. Avec l’authentification du client par JWT avec clé privée, un JWT d’assertion du client signé est transmise au fournisseur OpenID au lieu d’un secret client.
Le JWT d’assertion du client contient les revendications suivantes :
- Un
aud() qui identifie le du fournisseur OpenID. - Un
jti(ID JWT) pour permettre un usage unique ou une protection contre la relecture. - Un
exp(heure d’expiration) qui limite la période de validité du jeton. - Un
subetissqui identifient l’.
Flux d’authentification du client avec Private Key JWT

Pour effectuer ce flux, vous devez d’abord configurer une connexion OIDC ou Okta Workforce, nouvelle ou existante, avec
token_endpoint_auth_method=private_key_jwt, au moyen de l’Auth0 Dashboard ou de la Management API. Pour en savoir plus, consultez la section Configurer l’authentification du client avec Private Key JWT.-
Après avoir configuré votre connexion, Auth0 génère et stocke automatiquement deux paires de clés publiques et privées.
- Une paire de clés correspond à l’ensemble
currentactif, tandis que l’autre est étiquetéenextpour prendre en charge la rotation des clés.
- Une paire de clés correspond à l’ensemble
-
Selon votre IdP, vous devez ensuite soit :
- télécharger la clé publique
currentet téléverser le fichier sur le serveur d’autorisation; - copier et coller le
jwks_uridans le serveur d’autorisation.
- télécharger la clé publique
- Un utilisateur effectue une action qui nécessite une authentification, comme se connecter à votre application.
- Auth0 envoie une requête au serveur d’autorisation pour lancer l’authentification.
- Le serveur d’autorisation affiche à l’utilisateur des écrans d’authentification et de consentement.
- L’utilisateur s’authentifie et donne son consentement au serveur d’autorisation.
- Le serveur d’autorisation envoie un code d’autorisation à Auth0.
-
Auth0 génère un JWT d’assertion du client et le signe à l’aide de la clé privée
current. - Auth0 transmet le JWT d’assertion du client au serveur d’autorisation.
-
Le serveur d’autorisation repère l’application associée au
client_idfourni. -
Le serveur d’autorisation récupère les clés publiques depuis Auth0 si un
jwks_uria été fourni; sinon, il identifie la clé publique enregistrée à l’étape 2. -
Si le
jwks_uria été demandé, Auth0 renvoie les clés publiques sous forme de JWKS. -
Le serveur d’autorisation valide le JWT en vérifiant la signature à l’aide de la clé publique
current, identifiée parkiddans l’en-tête du JWTclient_assertion. - Le serveur d’autorisation génère un jeton d’accès.
- Le serveur d’autorisation transmet le jeton d’accès à Auth0.
- À l’aide du jeton d’accès, Auth0 demande une ressource au serveur de ressources.
- Le serveur de ressources fournit la ressource pour terminer le flux.
Configurer l’authentification du client par JWT avec clé privée
- Auth0 génère automatiquement une paire de clés de signature privée et publique pour chaque connexion.
- Vous pouvez utiliser les algorithmes suivants pour signer les JWT d’assertion client :
RS256,RS384,RS512,PS256,PS384,ES256etES384pour les connexions d’entreprise Okta et OIDC. La valeur par défaut estRS256si aucun algorithme n’est précisé. - Les JWT signés expirent automatiquement après 60 secondes.
Auth0 Dashboard
- Nouvelle connexion
- Connexion existante
- Dans votre Auth0 Dashboard, accédez à Authentication > Enterprise.
- À côté de OpenID Connect ou de Okta Workforce, sélectionnez Create.
- Dans la section General, fournissez les détails de votre nouvelle connexion, y compris son nom et l’URL de découverte.
-
Configurez les champs suivants pour activer l’authentification par JWT avec clé privée :
- Réglez Communication Channel à Back Channel.
- Réglez Authentication Method à Private Key JWT.
- Sélectionnez Create pour enregistrer votre nouvelle connexion.
Management API
- Nouvelle connexion
- Connexion existante
Pour créer une nouvelle connexion OIDC qui utilise l’authentification du client par JWT avec clé privée, appelez le point de terminaison Créer une connexion en définissant les propriétés
Exemple d’appel POST
connection.options suivantes de façon appropriée :| Propriété | Description |
|---|---|
type | Définissez cette propriété sur back_channel. |
token_endpoint_auth_method | Méthode d’authentification utilisée au point de terminaison de jeton du fournisseur d’identité. Définissez-la sur private_key_jwt pour utiliser une assertion JWT signée afin de renforcer la sécurité, ou sur client_secret_post pour envoyer les informations d’identification dans le corps de la requête. La valeur par défaut est client_secret_post. S’applique uniquement aux stratégies oidc et okta. |
token_endpoint_auth_signing_alg | Facultatif. Algorithme utilisé pour signer les assertions du client. Valeurs acceptées : RS256, RS384, RS512, PS256, PS384, ES256, ES384. Si aucune valeur n’est définie, la valeur par défaut est RS256. S’applique uniquement aux stratégies oidc et okta. |
id_token_signed_response_algs | Facultatif. Liste des algorithmes autorisés pour vérifier les ID tokens émis par le fournisseur d’identité. Lorsqu’elle est définie, Auth0 rejette les ID tokens signés avec un algorithme qui ne figure pas dans cette liste. Valeurs acceptées : RS256, RS384, RS512, PS256, PS384, ES256, ES384. Si elle n’est pas définie, Auth0 accepte les ID tokens signés avec n’importe quel algorithme pris en charge. S’applique uniquement aux stratégies oidc et okta. |
token_endpoint_jwtca_aud_format | Facultatif. Spécifie le format de la revendication aud (audience) dans le JWT utilisé pour l’authentification du client au point de terminaison de jeton. Définissez-la sur issuer pour utiliser l’URL de l’émetteur OIDC, ou sur token_endpoint pour utiliser l’URL du point de terminaison de jeton. La valeur par défaut est token_endpoint. |
Récupérer les clés de signature
Auth0 Dashboard
Auth0 Dashboard
Pour récupérer les clés de signature dans l’Auth0 Dashboard :
- Accédez à Authentication > Enterprise.
- À côté de OpenID Connect ou Okta Workforce, sélectionnez Browse.
- Choisissez la connexion appropriée, puis accédez à son onglet Credentials.
- Repérez la section Credentials et sélectionnez l’icône Download à côté de la clé de signature appropriée.
Management API
Management API
Pour afficher les clés publiques au moyen de la Management API, appelez le point de terminaison Get connection keys à l’aide de l’ID de votre connexion.Exemple d’appel GETExemple de réponse
URI JWKS publique
URI JWKS publique
Certains fournisseurs d’identité permettent de fournir des clés publiques pour private_key_jwt sous la forme d’une URI JWKS publique.Si des clés publiques ont été générées pour une connexion, vous pouvez les récupérer en ajoutant l’URI suivante à la configuration de votre IdP :
Rotation des clés de signature
Auth0 Dashboard
Auth0 Dashboard
Pour effectuer la rotation de vos clés de signature dans l’Auth0 Dashboard :
- Accédez à Authentication > Enterprise.
- À côté de OpenID Connect ou Okta Workforce, sélectionnez Browse.
- Choisissez la connexion appropriée, puis ouvrez son onglet Credentials.
- Dans la section Credentials, sélectionnez Rotate Keys.
- Dans la fenêtre contextuelle, sélectionnez Save pour confirmer la rotation.
Management API
Management API
Pour consulter les clés publiques au moyen de la Management API, appelez le point de terminaison Rotate Connection Signing Keys à l’aide de l’ID de votre connexion.Après la rotation, tout JWT en cours signé avec la clé précédente devient immédiatement invalide et sa vérification peut échouer auprès de votre IdP.
Comprendre la rotation des clés
Dans votre connexion OIDC ou Okta Workforce, vos clés de signature se voient attribuer l’un des états suivants :
- Actuelle : la clé de signature actuellement utilisée pour l’application.
- Suivante : la prochaine clé de signature qui sera utilisée pour l’application une fois la clé actuelle révoquée.
- Précédente : une clé de signature expirée ou autrement révoquée qui n’est plus utilisée.
current et next est générée. Une clé n’est marquée comme previous qu’après une rotation.Lors de la rotation des clés de signature, les changements suivants se produisent :- La clé
currentest supprimée et révoquée, et tout JWT signé avec cette clé échouera à la vérification auprès de l’IdP si l’IdP a été configuré avec lejwks_uri. - La clé
currentse voit attribuer l’étatprevious. - La clé
nextdevient la clé active et reçoit l’étatcurrent. Désormais, les JWT d’assertion du client seront signés avec cette clé. - Une nouvelle clé de signature est automatiquement générée pour remplacer la clé ayant fait l’objet de la rotation. La nouvelle clé de signature reçoit l’état
next.