Clé privée L’authentification du client est une méthode de remplacement de l’authentification du client pour le Connect (OIDC) et les connexions d’entreprise Okta Workforce. L’authentification client s’effectue généralement en transmettant un secret client. L’authentification client JWT avec clé privée transmet quant à elle un JWT signé afin de renforcer la sécurité de l’application. En utilisant cette fonctionnalité, vous pouvez éviter certaines failles de sécurité courantes souvent associées à l’authentification standard par clé secrète, telles que :Documentation Index
Fetch the complete documentation index at: https://auth0-feat-tab-ia.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
- Un risque accru d’interception et de réutilisation, car les informations confidentielles du client doivent être transmises entre les parties à chaque requête.
- Les mécanismes permettant d’imposer l’expiration et d’empêcher la réutilisation par des acteurs malveillants sont limités.
- Un risque accru de fuites ou de divulgation, les deux parties conservant le secret client.
Le fonctionnement
Le flux de connexion OIDC utilise des points de terminaison authentifiés, tels que/oauth/token ou /oauth/par, pour vérifier l’identité d’un client auprès du ou fournisseur OpenID. Avec l’authentification client JWT avec clé privée, un JWT d’assertion client signé est transmis au fournisseur OpenID à la place d’un secret client.
Le JWT d’assertion client contient les demandes suivantes :
- Un
aud() déterminer le public . - Un
jti(JWT d’ID) permettant une utilisation unique ou une protection contre la relecture. - Une valeur
exp(durée d’expiration) qui limite la période de validité du jeton. - Une
subetissdéterminant l’.
Flux d’authentification client JWT avec clé privée
Une fois qu’un utilisateur s’est authentifié auprès d’un (IdP), l’utilisateur est redirigé vers Auth0 avec un code d’autorisation qui est échangé contre des jetons au niveau du point de terminaison de jetons du fournisseur OpenID. Lorsque l’option « JWT avec clé privée » est activée pour une connexion, l’appel vers le point de terminaison de jetons du fournisseur OpenID utilise une assertion client plutôt qu’un secret client, afin de garantir une sécurité accrue lors de l’authentification. Les étapes suivantes illustrent un processus type d’authentification client JWT avec clé privée.
Pour terminer ce flux, vous devez d’abord configurer une connexion OIDC ou Okta Workforce (nouvelle ou existante) avec
token_endpoint_auth_method=private_key_jwt via Auth0 Dashboard ou Management API. Pour en savoir plus, consulter la section Configurer l’authentification client JWT avec clé privée.-
Après avoir configuré votre connexion, Auth0 génère et stocke automatiquement deux paires de clés, une publique et une privée.
- Une paire de clés correspond à l’ensemble
currentactif, tandis que l’autre ensemble est désigné parnextafin de permettre 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 vers le serveur d’autorisation, ou : - Copiez-collez le
jwks_urisur le serveur d’autorisation.
- Télécharger la clé publique
- Un utilisateur effectue une action qui nécessite une authentification, comme la connexion à votre application.
- Auth0 envoie une requête au serveur d’autorisation pour lancer l’authentification.
- Le serveur d’autorisation affiche les écrans d’authentification et de consentement à l’utilisateur.
- 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 client et le signe à l’aide de la clé privée
current. - Auth0 transmet le JWT d’assertion client au serveur d’autorisation.
-
Le serveur d’autorisation recherche le client à partir de l’
client_idfourni. -
Le serveur d’autorisation récupère les clés publiques auprès d’Auth0 si un
jwks_uria été fourni; dans le cas contraire, le serveur détermine la clé publique enregistrée à la deuxième étape. -
Si le
jwks_uria été demandé, Auth0 renvoie les clés publiques au format 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 nécessaire à l’exécution du flux.
Configurer l’authentification client JWT avec clé privée
Vous pouvez configurer les connexions OIDC et Okta Workforce Entreprise pour utiliser l’authentification client JWT avec clé privée via Auth0 Dashboard ou Management API. Vous trouverez ci-dessous les étapes à suivre pour chaque méthode.*Les paires de clés de connexion privées et publiques sont générées automatiquement par Auth0 pour chaque connexion.
*Vous pouvez utiliser les algorithmes suivants pour signer les JWT d’assertion client :
RS256, RS384, RS512, PS256, PS384, ES256, et ES384 pour les connexions Okta et OIDC Entreprise. Si aucun algorithme n’est défini, RS256 est utilisé.
*Les JWT signés expirent automatiquement au bout de 60 secondes.Auth0 Dashboard
Vous pouvez utiliser Auth0 Dashboard pour configurer l’authentification client JWT par clé privée pour les connexions OIDC et Okta Workforce, que ce soit pour les nouvelles connexions ou celles existantes.- Nouvelle connexion
- Connexion existante
- Dans Auth0 Dashboard, accédez à Authentification > Entreprise.
- En regard de OpenID Connect ou Okta Workforce, sélectionnez Créer.
- Dans la section Général, indiquez les détails de votre nouvelle connexion, notamment son nom et son URL de découverte.
- Configurez les champs suivants pour activer le JWT avec clé privée : *Réglez le canal de communication sur canal d’appui. *Définissez la méthode d’authentification sur JWT avec clé privée.
- Sélectionnez Créer pour enregistrer votre nouvelle connexion.
- Sur la fenêtre de confirmation, sélectionnez Modifier pour appliquer vos modifications.
Management API
Vous pouvez utiliser Management API pour configurer l’authentification client JWT par clé privée pour les connexions OIDC, que ce soit pour les nouvelles connexions ou celles existantes.- Nouvelle connexion
- Connexion existante
Pour créer une nouvelle connexion OIDC utilisant l’authentification client JWT avec clé privée, appelez le point de terminaison Créer une connexion en configurant correctement les propriétés
Exemple d’appel POST
connection.options suivantes :| Propriété | Description |
|---|---|
type | Définir cette propriété sur back_channel. |
token_endpoint_auth_method | Méthode d’authentification utilisée au point de terminaison du jeton du fournisseur d’identité. Définissez la valeur 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 identifiants dans le corps de la requête. Par défaut, token-endpoint. S’applique uniquement aux stratégies oidc et okta. |
token_endpoint_auth_signing_alg | Facultatif. Algorithme utilisé pour signer les assertions client. Valeurs acceptées : RS256, RS384, RS512, PS256, PS384, ES256, ES384. Si aucun algorithme n’est défini, RS256 est utilisé. S’applique uniquement aux stratégies oidc et okta. |
id_token_signed_response_algs | Facultatif. Liste des algorithmes autorisés pour la vérification des jetons d’ID émis par le fournisseur d’identité. Une fois cette option activée, Auth0 rejette les jetons d’ID signés à l’aide d’un algorithme ne figurant pas dans cette liste. Valeurs acceptées : RS256, RS384, RS512, PS256, PS384, ES256, ES384. Si cette valeur n’est pas définie, Auth0 accepte les jetons d’ID signés à l’aide de n’importe quel algorithme pris en charge. S’applique uniquement aux stratégies oidc et okta. |
token_endpoint_jwtca_aud_format | Facultatif. Indique le format de l’attribut aud (public) dans le JWT utilisé pour l’authentification client au niveau du point de terminaison du jeton. Définissez la valeur sur issuer pour utiliser l’URL de l’émetteur OIDC, ou sur token_endpoint pour utiliser l’URL du point de terminaison du jeton. |
Récupération des clés de connexion
Une fois que votre connexion a été configurée pour utiliser l’authentification client JWT avec clé privée, vous pouvez récupérer ses clés publiques via Auth0 Dashboard, Management API ou un URI JWKS public.Auth0 Dashboard
Auth0 Dashboard
Pour récupérer les clés de connexion via Auth0 Dashboard :
- Rendez-vous à Authentification > Entreprise.
- En regard de OpenID Connect ou Okta Workforce, sélectionnez Parcourir.
- Choisissez la connexion souhaitée. Accédez ensuite à son onglet Identifiants.
- Recherchez la section Identifiants et cliquez sur l’icône Télécharger située à côté de la clé de connexion correspondante.
Management API
Management API
Pour consulter les clés publiques via Management API, appelez le point de terminaison Obtenir les clés de connexion en utilisant l’identifiant de votre connexion.Exemple d’appel GETExemple de réponse
URI JWKS Public
URI JWKS Public
Certains fournisseurs d’identité autorisent la fourniture des clés publiques pour
private_key_jwt sous la forme d’un URI JWKS (JSON Web Key Set) public.Si des clés publiques ont été générées pour une connexion, vous pouvez les récupérer en ajoutant l’URI suivant à la configuration de votre fournisseur d’identité (IdP) :Rotation des clés d’authentification
L’authentification client JWT avec clé privée prend en charge la rotation des clés de connexion, ce qui renforce la sécurité par rapport à la nature statique et durable des secrets clients partagés. La rotation des clés de connexion renforce la sécurité en limitant la durée d’exposition de chaque clé, réduisant ainsi les possibilités qu’un pirate informatique parvienne à les compromettre. Cela permet également d’intervenir rapidement en cas d’incident de sécurité. Pour éviter toute interruption, Auth0 recommande de renouveler les clés de connexion tous les ans Vous pouvez utiliser Auth0 Dashboard ou Management API pour renouveler les clés de connexion :Auth0 Dashboard
Auth0 Dashboard
Pour effectuer une rotation de vos clés de connexion via Auth0 Dashboard :
- Rendez-vous à Authentification > Entreprise.
- En regard de OpenID Connect ou Okta Workforce, sélectionnez Parcourir.
- Choisissez la connexion souhaitée. Accédez ensuite à son onglet Identifiants.
- Dans la section Identifiants, sélectionnez Rotation des clés.
- Dans la fenêtre contextuelle, sélectionnez Enregistrer pour confirmer la rotation.
Management API
Management API
Pour consulter les clés publiques via Management API, appelez le point de terminaison Rotation des clés de connexion en utilisant l’identifiant de votre connexion.Une fois la rotation effectuée, tous les JWT en cours de validité signés avec la clé précédente deviennent immédiatement inactifs et risquent de ne pas passer la vérification auprès de votre fournisseur d’identité (IdP).
Understanding key rotation
Dans votre connexion OIDC ou Okta Workforce, vos clés de connexion se voient attribuer l’un des états suivants :
- Clé actuelle: La clé de connexion actuellement utilisée pour l’application.
- Clé suivante : La clé de connexion suivante à utiliser pour l’application une fois que la clé actuelle aura été révoquée.
- Clé précédente : Une clé de connexion 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 previous qu’après la rotation.Lors de la rotation des clés de connexion, les changements suivants se produisent :- La clé
currentest supprimée et révoquée ; tout JWT signé avec cette clé échouera à la vérification auprès du fournisseur d’identité (IdP) si celui-ci a été configuré avec la cléjwks_uri. - La clé
currentse voit attribuer l’étatprevious. - La clé
nextdevient la touche active et se voit attribuer l’étatcurrent. Dorénavant, les JWT d’authentification client seront signés à l’aide de cette clé. - Une nouvelle clé de connexion est générée automatiquement pour remplacer la clé qui a fait l’objet d’une rotation. La nouvelle clé de connexion a l’état
next.