Configurer le flux d’informations d’identification de client OAuth 2.0 dans Azure Active Directory B2C
Avant de commencer, utilisez le sélecteur Choisir un type de stratégie pour choisir le type de stratégie que vous configurez. Azure Active Directory B2C offre deux possibilités pour définir la façon dont les utilisateurs interagissent avec vos applications : via des flux utilisateurs prédéfinis ou via des stratégies personnalisées entièrement configurables. La procédure donnée dans cet article est différente pour chaque méthode.
Le flux d’octroi des informations d’identification de client OAuth 2.0 permet à une application (client confidentiel) d’utiliser ses propres informations d’identification pour s’authentifier quand elle appelle une ressource web telle que l’API REST, au lieu d’emprunter l’identité d’un utilisateur. Ce type d’octroi est couramment utilisé pour les interactions de serveur à serveur qui doivent s’exécuter en arrière-plan sans l’interaction immédiate d’un utilisateur. Ces types d’application sont souvent appelés démons (daemons) ou comptes de service.
Dans le flux des informations d’identification du client, les autorisations sont accordées directement à l’application elle-même par l’administrateur. Quand l’application présente un jeton à une ressource, la ressource impose que l’application elle-même, et non pas l’utilisateur (puisqu’il n’est pas impliqué), ait l’autorisation d’effectuer une action. Cet article décrit les étapes nécessaires pour autoriser une application à appeler une API et explique comment récupérer les jetons nécessaires pour appeler cette API.
Cette fonctionnalité est disponible en préversion publique.
Vue d’ensemble de l’inscription de l’application
Pour permettre à votre application de se connecter avec des informations d’identification de client, puis d’appeler une API web, vous devez inscrire deux applications dans le répertoire Azure AD B2C.
L’inscription de l’application permet à votre application de se connecter grâce à Azure AD B2C. Le processus d’inscription de l’application génère un ID d’application, également appelé ID client, qui identifie votre application de façon unique. Vous créez également une clé secrète client, que votre application utilise pour acquérir les jetons en toute sécurité.
L’inscription de l’API web permet à votre application d’appeler une API web sécurisée. L’inscription comprend les étendues de l’API web. Les étendues permettent de gérer les autorisations d’accès aux ressources protégées, telles que votre API web. Vous accordez ensuite à votre application des autorisations sur les étendues d’API web. Quand un jeton d’accès est demandé, votre application spécifie le paramètre d’étendue
.default
de la requête. Azure AD B2C retourne les étendues d’API web accordées à votre application.
Les inscriptions et l’architecture de l’application sont illustrées dans le diagramme suivant :
Étape 1 : Inscrire l’application API web
Dans cette étape, vous inscrivez l’API web (App 2) avec ses étendues. Plus tard, accordez à votre application (App 1) une autorisation sur ces étendues. Si vous disposez déjà d’une telle inscription d’application, ignorez cette étape et passez à la suivante : Étape 1.1 Définir des rôles d’API web (étendues).
Pour créer l’inscription d’application API web (ID d’application : 2), suivez les étapes suivantes :
Connectez-vous au portail Azure.
Veillez à bien utiliser l’annuaire qui contient votre locataire Azure AD B2C. Sélectionnez l’icône Répertoires + abonnements dans la barre d’outils du portail.
Sur la page Paramètres du portail | Répertoires + abonnements, recherchez votre répertoire AD B2C Azure dans la liste Nom de répertoire, puis sélectionnez Basculer.
Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
Sélectionnez Inscriptions d’applications, puis Nouvelle inscription.
Dans le champ Nom, entrez un nom pour l’application (par exemple my-api1). Laissez les valeurs par défaut pour l'URI de redirection et les Types de comptes pris en charge.
Sélectionnez Inscription.
Une fois l’inscription de l’application terminée, sélectionnez Vue d’ensemble.
Enregistrez l’ID d’application (client) que vous utiliserez ultérieurement pour configurer l’application web.
Étape 1.1 Définir des rôles d’API web (étendues)
Dans cette étape, vous configurez l’URI d’ID d’application de l’API web, puis vous définissez les rôles d’application. Les rôles d’application sont utilisés par les étendues OAuth 2.0 et définis sur une inscription d’application représentant votre API. Votre application utilise l’URI d’ID d’application avec l’étendue .default
. Pour définir des rôles d’application, effectuez les étapes suivantes :
Sélectionnez l’API web que vous avez créée, par exemple my-api1.
Sous Gérer, sélectionnez Exposer une API.
A côté d’URI d’ID d’application, sélectionnez le lien Définir. Remplacez la valeur par défaut (GUID) par un nom unique (par exemple, api), puis sélectionnez Enregistrer.
Copiez l’URI d’ID d’application. La capture d’écran suivante montre comment copier l’URI d’ID d’application.
Sous Gérer, sélectionnez Manifeste pour ouvrir l’éditeur de manifeste d’application. Dans l’éditeur, recherchez le paramètre
appRoles
et définissez les rôles d’application qui ciblentapplications
. Chaque définition de rôle d’application doit avoir un identificateur unique (GUID) pour sa valeurid
. Générez un nouveau GUID en exécutant la commandenew-guid
dans Microsoft PowerShell ou un générateur de GUID en ligne. La propriétévalue
de chaque définition de rôle d’application apparaît dans l’étendue, la revendicationscp
. La propriétévalue
ne peut pas contenir d’espaces. L’exemple suivant illustre deux rôles d’application, lecture et écriture :"appRoles": [ { "allowedMemberTypes": ["Application"], "displayName": "Read", "id": "d6a15e20-f83c-4264-8e61-5082688e14c8", "isEnabled": true, "description": "Readers have the ability to read tasks.", "value": "app.read" }, { "allowedMemberTypes": ["Application"], "displayName": "Write", "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9", "isEnabled": true, "description": "Writers have the ability to create tasks.", "value": "app.write" }],
En haut de la page, sélectionnez Enregistrer pour enregistrer les modifications du manifeste.
Étape 2 : Inscrire une application
Pour permettre à votre application de se connecter avec Azure AD B2C à l’aide du flux d’informations d’identification client, vous pouvez utiliser une application existante ou en inscrire une nouvelle (App 1).
Si vous utilisez une application existante, vérifiez que la accessTokenAcceptedVersion
de l’application est définie sur 2
:
- Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
- Sélectionnez Inscriptions d’applications, puis sélectionnez votre application existante dans la liste.
- Dans le menu de gauche, sous Gérer, sélectionnez Manifeste pour ouvrir l’éditeur de manifeste.
- Repérez l’élément
accessTokenAcceptedVersion
et définissez sa valeur sur2
. - En haut de la page, sélectionnez Enregistrer pour enregistrer les modifications.
Pour créer une nouvelle inscription d’application web, procédez comme suit :
Dans le portail Azure, recherchez et sélectionnez Azure AD B2C
Sélectionnez Inscriptions d’applications, puis Nouvelle inscription.
Entrez un Nom pour l’application. Par exemple, ClientCredentials_app.
Laissez les autres valeurs telles quelles, puis sélectionnez Inscrire.
Enregistrez l’ID d’application (client) pour l’utiliser dans une étape ultérieure.
Étape 2.1 Créer un secret client
Créez un secret client pour l’application inscrite. Votre application utilise le secret client pour prouver son identité quand elle demande des jetons.
Sous Gérer, sélectionnez Certificats et secrets.
Sélectionnez Nouveau secret client.
Entrez une description pour la clé secrète client dans la zone Description (par exemple, clientsecret1).
Sous Expire, sélectionnez une durée pendant laquelle le secret est valide, puis sélectionnez Ajouter.
Enregistrez la Valeur du secret. Vous utiliserez cette valeur pour la configuration dans une étape ultérieure.
Étape 2.2 Accorder à l’application des autorisations pour l’API web
Pour accorder des autorisations à votre application (App 1), effectuez les étapes suivantes :
Sélectionnez Inscriptions d’applications, puis l’application que vous avez créée (App 1).
Sous Gérer, sélectionnez Autorisations de l’API.
Sous Autorisations configurées, sélectionnez Ajouter une autorisation.
Sélectionnez l’onglet Mes API.
Sélectionnez l’API (App 2) à laquelle l’application web doit être autorisée à accéder. Par exemple, saisissez my-api1.
Sélectionnez Autorisation d’application.
Sous Autorisation, développez application, puis sélectionnez les étendues que vous avez définies auparavant (par exemple, app.read et app.write).
Sélectionnez Ajouter des autorisations.
Sélectionnez Accorder le consentement de l’administrateur pour <nom de votre locataire>.
Sélectionnez Oui.
Sélectionnez Actualiser, puis vérifiez que la mention Accordé pour ... apparaît sous État pour les deux étendues.
Étape 3 : Obtenir un jeton d’accès
Aucune action spécifique n’est nécessaire pour utiliser les informations d’identification de client avec des flux d’utilisateur ou des stratégies personnalisées. Les stratégies personnalisées et les flux d’utilisateur Azure AD B2C prennent en charge le flux d’informations d’identification de client. Si ce n’est déjà fait, créez un flux d’utilisateur ou une stratégie personnalisée. Ensuite, utilisez votre application de développement d’API préférée pour générer une demande d’autorisation. Construisez un appel similaire à cet exemple, avec les informations suivantes en tant que corps de la requête POST :
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token
- Remplacez
<tenant-name>
par le nom de votre locataire Azure AD B2C. Par exemple :contoso.b2clogin.com
. - Remplacez
<policy>
par le nom complet de votre flux d’utilisateur ou de votre stratégie personnalisée. Notez que tous les types de flux d’utilisateur et de stratégies personnalisées prennent en charge le flux d’informations d’identification de client. Vous pouvez utiliser n’importe quel flux d’utilisateur ou stratégie personnalisée dont vous disposez ou en créer un (inscription ou connexion, par exemple).
Clé | Valeur |
---|---|
grant_type | client_credentials |
client_id | ID client de l’étape 2 Inscrire une application. |
client_secret | Valeur du secret client de l’étape 2.1 Créer un secret client. |
scope | URI d’ID d’application de l’étape 1.1 Définir des rôles d’API web (étendues) et .default . Par exemple, https://contoso.onmicrosoft.com/api/.default ou https://contoso.onmicrosoft.com/12345678-0000-0000-0000-000000000000/.default . |
La requête POST réelle ressemble à l’exemple suivant :
Demande :
POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=33333333-0000-0000-0000-000000000000
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default
Réponse :
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
"token_type": "Bearer",
"not_before": 1645172292,
"expires_in": 3600,
"expires_on": 1645175892,
"resource": "33333333-0000-0000-0000-000000000000"
}
Découvrez les revendications de jeton d’accès de retour. Le tableau suivant liste les revendications liées au flux d’informations d’identification de client.
Revendication | Description | Valeur |
---|---|---|
aud |
Identifie le destinataire du jeton. | ID client de l’API. |
sub |
Principal de service associé à l’application qui a initié la demande. | Il s’agit du principal de service du client_id de la demande d’autorisation. |
azp |
Partie autorisée : partie à l’attention de laquelle le jeton d’accès a été émis. | ID client de l’application qui a initié la demande. Il s’agit de la valeur que vous avez spécifiée dans le client_id de la demande d’autorisation. |
scp |
Ensemble d’étendues exposées par votre API d’application (délimiteur d’espace). | Dans le flux d’informations d’identification de client, l’étendue .default est demandée dans le cadre de la demande d’autorisation et le jeton contient la liste des étendues exposées (et consenties par l’administrateur de l’application) par l’API. Par exemple : app.read app.write . |
Étape 3.1 Obtenir un jeton d’accès avec un script
Utilisez le script PowerShell suivant pour tester votre configuration :
$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret
$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body
Utilisez le script cURL suivant pour tester votre configuration :
curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'
Étape 4 : Personnaliser le jeton
Cette fonctionnalité est disponible uniquement pour les stratégies personnalisées. Pour accéder aux étapes de configuration, sélectionnez Stratégie personnalisée dans le sélecteur précédent.
Les stratégies personnalisées permettent d’étendre le processus d’émission de jeton. Pour personnaliser le parcours utilisateur relatif aux informations d’identification de client OAuth 2.0, suivez les instructions sur la configuration du parcours utilisateur relatif aux informations d’identification de client. Ensuite, dans le profil technique JwtIssuer
, ajoutez les métadonnées ClientCredentialsUserJourneyId
avec une référence au parcours utilisateur que vous avez créé.
L’exemple suivant montre comment ajouter le ClientCredentialsUserJourneyId
au profil technique de l’émetteur de jeton.
<TechnicalProfile Id="JwtIssuer">
<Metadata>
<Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
</Metadata>
</TechnicalProfile>
L’exemple suivant montre un parcours utilisateur relatif aux informations d’identification de client. La première étape et la dernière étape d’orchestration sont requises.
<UserJourneys>
<UserJourney Id="ClientCredentialsJourney">
<OrchestrationSteps>
<!-- [Required] Do the client credentials -->
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Optional] Call a REST API or claims transformation -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Required] Issue the access token -->
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
Étapes suivantes
Découvrez comment configurer un flux d’informations d’identification par mot de passe du propriétaire de ressource dans Azure AD B2C.