Enregistrement dynamique des clients avec le nouveau fournisseur Connect d' OpenID
L'enregistrement dynamique de client permet à la partie utilisatrice d'OpenID Connect (OIDC) de s'enregistrer auprès du fournisseur OpenID Connect.
Avant de commencer
Il repose sur les spécifications « Connect Dynamic Client Registration » d' OpenID, disponibles à l'adresse 1.0.
Les nouvelles applications OIDC sont créées par un administrateur titulaire ou un utilisateur disposant d'un accès administrateur au titulaire. Désormais, les applications OIDC peuvent également être créées de manière dynamique grâce à l'enregistrement dynamique des clients.
Le nœud final d'enregistrement de client dynamique se trouve ici : https://{{tenant}}/oauth2/register.
A propos de cette tâche
Configurez les paramètres d'enregistrement dynamique des clients, puis enregistrez dynamiquement la nouvelle application OIDC à l'aide de l'API d'enregistrement. L'application est soit une application « "OpenID Connect », soit une application « "OpenID Connect for Open Banking ».
Paramètres dynamiques d'enregistrement des clients
Les paramètres d'enregistrement dynamique des clients peuvent être configurés afin de définir les valeurs par défaut pour l'enregistrement dynamique des clients. Voir la section « Configuration des paramètres d'enregistrement dynamique des clients OIDC ».
Les paramètres concernés sont décrits dans le tableau ci-dessous.
| Zone | Descriptif |
|---|---|
| Types d'octroi | Les types de subventions à utiliser s'ils ne sont pas spécifiés dans la charge utile de l'enregistrement dynamique du client. Les types d'authentification pris en charge sont « Code d'autorisation », « Implicite », « Mot de passe », « Jeton de rafraîchissement » et « Identifiants du client ». Si la valeur de la recette Open Banking n'est pas « Aucune », le type d'autorisation « Mot de passe » n'est pas autorisé. |
| Réclamations de jeton d'ID | Les données par défaut concernant le jeton d'identification et les informations utilisateur, si elles ne sont pas spécifiées dans la charge utile de l'enregistrement dynamique du client. |
| Réclamations de jeton | Les revendications par défaut pour l'introspection et le jeton d'accès JWT, si elles ne sont pas spécifiées dans la charge utile d'enregistrement dynamique du client. |
| Type de jeton d'accès | Le type de jeton d'accès à générer. Les valeurs autorisées sont « Default » et « JWT ». |
| Algorithme de signature de jeton d'ID | L'algorithme utilisé pour signer les jetons d'identification, s'il n'est pas spécifié dans la charge utile d'enregistrement dynamique du client. |
| Accord de l'utilisateur | Indiquez s'il faut demander le consentement de l'utilisateur si celui-ci n'est pas spécifié dans la charge utile de l'enregistrement dynamique du client. |
| Durée de vie du jeton d'accès | La durée de validité du jeton d'accès, en secondes. Maximum 2 147 483 647, minimum 1. |
| Durée de vie du jeton d'actualisation | La durée de validité du jeton d'actualisation, en secondes. Maximum 2 147 483 647, minimum 1. |
| Appliquer la vérification PKCE | Indiquez si vous souhaitez appliquer le protocole PKCE lorsque celui-ci n'est pas spécifié dans la charge utile d'enregistrement dynamique du client. |
| Autoriser pour tous les utilisateurs | Vérifiez si tous les utilisateurs sont autorisés à utiliser ce client, si cela n'est pas précisé dans la charge utile d'enregistrement dynamique du client. |
| Durée de validité de l'objet de demande | La durée de validité de l'objet de requête, exprimée en secondes. Maximum 2 147 483 647, minimum 1. |
| Exiger "exp" pour l'objet de demande | Détermine si l'attribut « exp » est obligatoire dans l'objet de requête. |
| Autoriser les données d'identification client personnalisées | Détermine si les identifiants client personnalisés sont autorisés. Si cette option est définie sur « false », l'ID client et la clé secrète ne peuvent pas être spécifiés dans la charge utile d'enregistrement dynamique du client. |
| Algorithmes de signature d'objet de demande autorisés | Liste des algorithmes de signature autorisés pour le JWT de la requête signée. Si ce paramètre n'est pas défini, tous les algorithmes pris en charge sont autorisés. |
| Règle de transformation de demande | Entrez la règle permettant de modifier la demande d'enregistrement dynamique de client. Si ce paramètre n'est pas défini, aucune modification n'est apportée à la demande d'enregistrement dynamique du client. |
| Recette Open Banking | La recette Open Banking à appliquer à toutes les inscriptions dynamiques de clients. Lorsque ce champ est défini sur « Aucun », une application « 'OpenID Connect » est créée. Si la valeur définie est différente, une application « 'OpenID Connect for Open Banking » est créée. |
Pour les sections « Déclaration logicielle », « Demande d'autorisation » et « Jeton d'accès d'enregistrement » des paramètres, consultez la section « Configuration des paramètres d'enregistrement dynamique des clients OIDC ».
Exiger l'authentification du jeton bearer pour l'enregistrement dynamique de client
Si l'autorisation de la requête est configurée pour exiger une autorisation par jeton « bearer » lors de l'enregistrement dynamique d'un client, un jeton d'accès initial est requis.
Créez un client d'API avec le droit d'accès Manage OIDC client registration dynamically. Pour créer le client API, consultez la section « Gestion de l'accès à l'API des applications ».
Une fois le client API créé, utilisez le flux client_credentials pour obtenir le jeton d'accès. Le code suivant est un exemple :
curl -ki -v https://{{tenant}}/v1.0/endpoint/default/token -d "grant_type=client_credentials&client_id=<clientId>&client_secret=<clientSecret>"
La requête d'enregistrement dynamique du client nécessite que le jeton « bearer » soit fourni dans l'en-tête d'autorisation.
Exiger MTLS pour l'enregistrement dynamique de client
Si l'autorisation de la requête est configurée pour exiger TLS mutuel, un certificat valide doit être présenté par le client pour la requête.
Enregistrer une nouvelle application à l'aide de l'API d'enregistrement
Le tableau ci-dessous présente la liste des métadonnées client actuellement prises en charge.
| Nom des métadonnées | Description des métadonnées | Facultatif | Valeurs valides |
|---|---|---|---|
| client_name | Nom de l'application | Oui | chaîne |
| client_id | L'ID client est automatiquement généré s'il n'est pas fourni. | Oui | chaîne |
| client_secret | Le secret du client est automatiquement généré s'il n'est pas fourni. | Oui | chaîne |
| redirect_uris | Liste des URI de redirection. | Non | liste des URI de chaîne |
| grant_types | Tableau des types d'octroi que l'application peut utiliser. | Oui | « authorization_code », « implicit », « password », « refresh_token » et « client_credentials » |
| id_token_signed_response_alg | Algorithme de signature de jeton. | Oui | 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512' |
| all_users_entitled | Défini sur true si tous les utilisateurs sont habilités à utiliser cette application. | Oui | true ou false |
| jwks_uri | URL du document de l'ensemble de clés Web JSON du client. | Oui | URL |
| consent_action | Demande de consentement de l'utilisateur. | Oui | ‘never_prompt’ ou ‘always_prompt’ |
| enforce_pkce | Utilisation forcée de PKCE. | Oui | true ou false |
| portée | Chaîne de caractères séparée par des espaces contenant les domaines autorisés. | Oui | chaîne |
| id_token_claims | Liste des réclamations pour id_token et informations utilisateur. | Oui | Liste de chaînes |
| token_claims | Liste de réclamations pour l'introspection et le jeton d'accès JWT. | Oui | Liste de chaînes |
| initiate_login_uri | URL permettant de démarrer la connexion. | Oui | URL |
| types de réponse | Types de réponses utilisés par ce client. | Oui | Liste de chaînes |
| token_endpoint_auth_method | Méthode d'authentification client pour le nœud final de jeton. | Oui | 'default', 'client_secret_basic', 'client_secret_post', 'private_key_jwt', 'tls_client_auth' |
| tls_client_auth_subject_dn | Nom distinctif prévu du sujet du certificat utilisé par le client lors de l'authentification mutuelle par le protocole TLS. | Oui | chaîne |
| tls_client_auth_san_dns | L'entrée SAN (nom de domaine) attendue dans le certificat que le client utilise lors de l'authentification par TLS mutuel. | Oui | chaîne |
| tls_client_auth_san_uri | L'entrée SAN URI attendue dans le certificat utilisé par le client pour l'authentification TLS mutuelle. | Oui | chaîne |
| tls_client_auth_san_ip | L'entrée SAN d'adresse IP attendue dans le certificat utilisé par le client pour l'authentification TLS mutuelle. | Oui | chaîne |
| tls_client_auth_san_email | L'entrée SAN correspondant à l'adresse e-mail attendue dans le certificat que le client utilise pour l'authentification mutuelle par le protocole TLS. | Oui | chaîne |
| tls_client_certificate_bound_access_tokens | Indique si la liaison de certificat pour le jeton d'accès est requise. | Oui | true ou false |
| algorithme_de_réponse_signée_des_informations_utilisateur | L'algorithme de signature JWT pour la réponse contenant les informations utilisateur. | Oui | 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512' |
| algorithme_de_chiffrement_de_la_réponse_des_informations_utilisateur | L'algorithme de chiffrement JWT utilisé pour les réponses contenant les informations utilisateur. | Oui | « RSA-OAEP », « RSA-OAEP-256 » |
| userinfo_encrypted_response_enc | L'algorithme de chiffrement utilisé pour le contenu du JWT de réponse aux informations utilisateur. | Oui | 'A128GCM', 'A192GCM', 'A256GCM' |
Exemple d'enregistrement d'une nouvelle application
Le code suivant est un exemple de requête lorsque l'enregistrement dynamique des clients est configuré pour exiger une autorisation par jeton « bearer ».
curl -ki -H "Authorization: bearer <access-token>" -H "Content-Type:application/json" -X POST https://{{tenant}}/oauth2/register --data-binary '{"redirect_uris":["https://www.redirect.com"],"client_name":"MyApplication"}'
réponse
{
"grant_types": [
"authorization_code"
],
"client_secret_expires_at": "0",
"registration_client_uri": "https://{{tenant}}/oauth2/register/<clientId>",
"client_secret": "<client_secret>",
"redirect_uris": [
"https://www.redirect.com"
],
"client_id_issued_at": "1586933118",
"client_name": "MyApplication",
"registration_access_token": "<access_token>",
"client_id": "<clientId>",
"id_token_signed_response_alg": "RS256"
}
Configuration supplémentaire de l'application
Une fois l'application créée, vous pouvez configurer d'autres options, telles que le mappage des attributs, la politique d'accès, les sources d'identité, les utilisateurs autorisés, etc. Pour configurer ces options, consultez la section « Configuration de l'authentification unique dans l'application OpenID Connect » ou « Configuration de l'authentification unique dans les applications OpenID Connect for Open Banking ».
Mettre à jour l'application OIDC à l'aide de l'API d'enregistrement
Le code suivant montre comment utiliser le registration_access_token jeton d'autorisation obtenu à l'étape précédente et envoyer une requête PUT pour modifier le client. Veuillez noter que les modifications apportées à la configuration de l'application OIDC seraient écrasées.
curl -ki -H "Authorization: bearer <registration_access_token>" -H "Content-Type:application/json" -X PUT https://{{tenant}}/oauth2/register/<client-id> --data-binary '{"redirect_uris":["https://www.redirect.com/callback"],"client_name":"MyApplication2"}'
Lire l'application OIDC à l'aide de l'API d'enregistrement
L'API d'enregistrement permet également de lire à nouveau l'application OIDC.
curl -ki -H "Authorization: bearer <registration-access-token>" https://{{tenant}}/oauth2/register/<clientId>
Supprimer une application OIDC à l'aide de l'API d'enregistrement
L'API d'enregistrement permet également de supprimer l'application OIDC.
curl -ki -H "Authorization: bearer <registration-access-token>" -X DELETE https://{{tenant}}/oauth2/register/<clientId>
Jeton d'accès à l'enregistrement expiré
Si le jeton d'accès d'enregistrement expire, obtenez un nouveau jeton d'accès en utilisant l'ID client et la clé secrète du client qui a été enregistré. Voir « Obtenir un jeton d'accès initial ».