Configurer l’authentification par clé privée JWT
L’authentification par clé privée JWT prend en charge l’authentification client OIDC Connect Core Client Authentication 1.0 en utilisant des assertions signées par des paires de clés asymétriques. Vous pouvez créer une nouvelle application pour qu’elle utilise private_key_jwt
ou permettre aux applications existantes d’utiliser des paires de clés privées pour l’authentification.
Prérequis
Vous devez générer une paire de clés RSA avant de configurer votre application qui s’authentifie par clé privée JWT.
Configurer la clé privée JWT
Vous pouvez utiliser Auth0 Dashboard pour créer une nouvelle application et configurer des identifiants ou mettre à jour une application existante.
Nous vous recommandons de stocker en toute sécurité le paramètre client_secret
actuel avant de définir la méthode d’identification de votre application sur la clé privée JWT. Le paramètre client_secret
sera masqué une fois la configuration de la clé privée JWT terminée.
Configurer une nouvelle application pour private_key_jwt
Naviguez vers Auth0 Dashboard > Applications > Applications.
Sélectionnez Create Application (Créer une application).
Choisissez votre type d’application.
Dans les paramètres de l’application, sélectionnez l’onglet Identifiants.
Sous Méthodes d’authentification, sélectionnez Clé privée JWT.
Configurer les détails de l’identifiant :
Entrez un nom pour l’identifiant.
Téléversez votre certificat en format PEM ou X.509.
Sélectionnez l’algorithme pour signer les assertions.
Facultatif : Activez l’expiration personnalisée. Sélectionnez Set an explicit expiry date for this Credential (Définir une date d’expiration explicite pour cet identifiant) et définissez une date dans le futur.
Sélectionnez Add Credential (Ajouter l’identifiant).
Configurer une application existante
Naviguez jusqu’à Auth0 Dashboard > Applications.
Sélectionnez l’application à mettre à jour.
Sélectionnez l’onglet Credentials (Identifiants).
Choisissez Clé privée JWT.
Configurer les détails de l’identifiant :
Entrez un nom pour l’identifiant.
Téléversez votre certificat en format PEM ou X.509.
Sélectionnez l’algorithme pour signer les assertions.
Facultatif : Activez l’expiration personnalisée. Sélectionnez Set an explicit expiry date for this Credential (Définir une date d’expiration explicite pour cet identifiant) et définissez une date dans le futur.
Sélectionnez Add Credential (Ajouter l’identifiant).
Configurer une application pour qu’elle utilise l’authentification secret client
Naviguez vers Auth0 Dashboard > Applications > Applications et sélectionnez l’application que vous voulez mettre à jour.
Sélectionnez l’onglet Credentials (Identifiants).
Choisissez Client Secret Post (Secret client Post) ou Client Secret Basic (Secret client Basic).
Sélectionnez Save (Enregistrer).
Mettre à jour la date d’expiration de l’identifiant
Vous pouvez mettre à jour un identifiant existant en y ajoutant une date d’expiration dans Auth0 Dashboard.
Naviguez vers Auth0 Dashboard > Applications > Applications et sélectionnez l’application que vous voulez mettre à jour.
Sélectionnez l’onglet Credentials (Identifiants).
Choisissez l’identifiant que vous voulez mettre à jour et sélectionnez Edit Credential (Modifier l’identifiant).
Sélectionnez Set an explicit expiry date for this Credential (Définir une date d’expiration explicite pour cet identifiant) et définissez une date ultérieure.
Sélectionnez Update Credential (Mettre à jour l’identifiant).
Configurer une nouvelle application pour private_key_jwt
Vous pouvez créer une nouvelle application avec private_key_jwt
comme méthode d’authentification à l’aide de Management API. Effectuez un appel POST
au point de terminaison Create a Client
avec la charge utile suivante :
curl --location --request POST 'https://{domain}/api/v2/clients' \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "{clientName}",
"app_type": "non_interactive",
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [
{
"name": "{credentialName}",
"credential_type": "public_key",
"pem": "{credentialublicKey}",
"alg": "{algorithm}",
"expires_at": "{expiresAt}"
}
]
},
"jwt_configuration": {
"alg": "RS256"
}
}
}'
Was this helpful?
Paramètre | Description |
---|---|
algorithm |
Algorithme utilisé pour signer les assertions. Les valeurs prises en charge sont RS256, RS384 et PS256. S’il n’est pas précisé, l’algorithme sera par défaut RS256. |
clientName |
Nom pour votre nouveau client. |
credentialName |
Nom pour la clé publique. |
expires_at |
Facultatif. Date d’expiration de l’authentifiant au format ISO 8601. Par exemple, « 2020-08-20T19:10:06.299Z ». Une fois la date d’expiration passée, l’authentifiant n’est plus valide. |
managementApiAccessToken |
Jeton d’accès pour Management API avec la permission create:credentials . |
pem |
Clé publique, ou certificat x.509, encodé au format PEM. |
parse_expiry_from_cert |
Facultatif. Un booléen qui indique à Auth0 d’analyser la date d’expiration lorsqu’un certificat lui est fourni. Si aucun certificat n’est fourni , Auth0 renverra une erreur. parse_expiry_from_cert et expires_at sont aussi mutuellement exclusifs. Dans ce cas, Auth0 renverra une erreur. |
La réponse contient la propriété client_id
, qui liera votre application au serveur de ressources. La réponse contient également un kid
généré pour l’identifiant que vous avez créé. Celui-ci sera utilisé plus tard pour générer la valeur client_assertion
.
Configurer une application existante
Vous pouvez aussi configurer une application existante pour utiliser l’authentification par clé privée JWT avec Auth0 Management API. Vous devrez retirer les valeurs du champ token_endpoint_auth_method
et créer des valeurs dans le champ client_authentication_methods
.
Créer la ressource d’identification
Une fois que vous avez généré une paire de clés, créez la ressource d’identification. Effectuez la demande POST suivante au point de terminaison /clients
de Management API.
curl --location --request POST 'https://{domain}/api/v2/clients/{clientId}/credentials' \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "{credentialName}",
"credential_type": "public_key",
"pem": "{credentialPublicKey}",
"alg": "{algorithm}",
"expires_at ": "{expiresAt}",
}'
Was this helpful?
Paramètre | Description |
---|---|
algorithm |
Algorithme utilisé pour signer les assertions. Les valeurs prises en charge sont RS256, RS384 et PS256. S’il n’est pas spécifié, l’algorithme par défaut est RS256. |
clientId |
Identifiant de l’application à mettre à jour. |
credentialName |
Nom de la clé publique. |
managementApiAccessToken |
Jeton d’accès à Management API avec la permission create:credentials . |
pem |
Clé publique, ou certificat x.509, encodée au format PEM. |
expires_at |
Facultatif. Date d’expiration de l’identifiant au format ISO 860. Par exemple, 2020-08-20T19:10:06.299Z . Une fois la date d’expiration passée, l’identifiant n’est plus valide. |
parse_expiry_from_cert |
Facultatif. Un booléen qui indique qu’Auth0 doit analyser l’expiration lorsqu’un certificat est fourni. Si aucun certificat n’est fourni, Auth0 renvoie une erreur. parse_expiry_from_cert et expires_at sont mutuellement exclusifs. Dans ce cas, Auth0 va retourner une erreur. |
Un identifiant est retourné dans la réponse. Utilisez l’identifiant pour l’étape suivante.
Association de l’identifiant
Une fois que vous avez créé l’identifiant, associez-le à votre application. Votre application utilise ces identifiants pendant l’authentification avec private_key_jwt
.
Effectuez une requête PATCH au point de terminaison Update a Client
de Management API :
curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"token_endpoint_auth_method": null,
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [{ "id": {credentialId} }]
}
}
}'
Was this helpful?
Parameter | Description |
---|---|
clientId |
ID de l’application à mettre à jour. |
managementApiAccessToken |
Jeton d’accès à Management API avec les permissions update:client et update:credentials . |
credentialId |
ID de l’identifiant que vous avez créé. |
pem |
La clé publique en format PEM. |
Configurer une application pour qu’elle utilise l’authentification par secret client
Pour restaurer la configuration de votre application afin qu’elle utilise un secret client, vous devez désactiver client_authentication_methods
et activer à nouveau token_endpoint_auth_method
avec la méthode d’authentification.
Exemple
curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"token_endpoint_auth_method": "{tokenEndpointAuthMethod}",
"client_authentication_methods": null
}'
Was this helpful?
Paramètre | Description |
---|---|
clientId |
ID de l’application à mettre à jour. |
managementApiAccessToken |
Jeton d’accès pour Management API avec les permissions update:client |
tokenEndpointAuthMethod |
Méthode d’authentification finale. Par exemple : client_secret_basic ou client_secret_post . |
Ajout d’un champ d’expiration comme correctif pour les identifiants
Vous pouvez mettre à jour un identifiant existant avec une date d’expiration à l’aide du point de terminaison Mettre à jour un identifiant de Management API.
curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId}/credentials/{credentialId} ' \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"expires_at": {expiresAt}
}'
Was this helpful?
| Paramètre | Description | | ---------- | ---------- | |managementApiAccessToken
| Jetons d’accès à Management API avec les permissions update:credentials
.| |clientId
| Le client que vous souhaitez mettre à jour.| |expires_at
|La date d’expiration des identifiants est au format ISO 8601. Par exemple, 2020-08-20T19:10:06.299Z
.|
Le champ expires_at
est le seul que vous pouvez mettre à jour. Le reste des attributs sont immuables et nécessitent une rotation de l’identifiant pour être modifiés.
Limites des identifiants
Auth0 impose une taille de clé RSA minimale de 2 048 bits et une taille de clé maximale de 4 096 bits. Les applications peuvent avoir un maximum de deux informations d’identification configurées.
Rotation des identifiants
Pour éviter les fuites de clés, Auth0 recommande une rotation périodique de la paire de clés. Pour en savoir plus, lisez Rotation des identifiants.