Passer un jeton d’accès de fournisseur d’identité à votre application 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.

Un flux utilisateur dans Azure AD B2C (Azure Active Directory B2C) permet aux utilisateurs de votre application de s’inscrire ou de se connecter à un fournisseur d’identité. Au départ, Azure AD B2C reçoit un jeton d’accès du fournisseur d’identité. Azure AD B2C utilise ce jeton pour récupérer des informations sur l’utilisateur. Vous activez une revendication dans votre flux utilisateur pour passer le jeton aux applications que vous inscrivez dans Azure AD B2C.

Azure AD B2C permet uniquement de passer le jeton d’accès de fournisseurs d’identité OAuth 2.0 (dont font partie Facebook et Google). Pour tous les autres fournisseurs d’identité, la revendication est retournée vide.

Azure AD B2C prend en charge la transmission du jeton d'accès des fournisseurs d'identité OAuth 2.0 et OpenID Connect. Pour tous les autres fournisseurs d’identité, la revendication est retournée vide. Pour plus d’informations, consultez la démonstration en directde la fédération des fournisseurs d’identités.

Le diagramme suivant montre comment un jeton de fournisseur d’identité est retourné à votre application :

Identity provider pass through flow

Prérequis

Activer la revendication

  1. Connectez-vous au portail Azure en tant qu’administrateur général de votre locataire Azure AD B2C.

  2. Si vous avez accès à plusieurs tenants (locataires), sélectionnez l’icône Paramètres dans le menu supérieur pour basculer vers votre tenant Azure AD B2C à partir du menu Annuaires + abonnements.

  3. Choisissez Tous les services dans le coin supérieur gauche du Portail Azure, recherchez et sélectionnez Azure Active Directory B2C.

  4. Sélectionnez Flux utilisateur (stratégies) , puis votre flux utilisateur. Par exemple, B2C_1_signupsignin1.

  5. Cliquez sur Revendications de l’application.

  6. Activez la revendication Jeton d’accès du fournisseur d’identité.

    Enable the Identity Provider Access Token claim

  7. Cliquez sur Enregistrer pour enregistrer le flux utilisateur.

Tester le flux utilisateur

Quand vous testez vos applications dans Azure AD B2C, il peut être utile de retourner le jeton Azure AD B2C à https://jwt.ms pour passer en revue les revendications qu’il contient.

  1. Dans la page Vue d’ensemble du flux utilisateur, sélectionnez Exécuter le flux d’utilisateur.

  2. Pour Application, sélectionnez l’application que vous avez précédemment inscrite. Pour voir le jeton dans l’exemple ci-dessous, l’URL de réponse doit indiquer https://jwt.ms.

  3. Cliquez sur Exécuter le flux d’utilisateur, puis connectez-vous avec les informations d’identification de votre compte. Vous devez voir le jeton d’accès du fournisseur d’identité dans la revendication idp_access_token.

    Vous devriez voir quelque chose de similaire à l’exemple suivant :

    Decoded token in jwt.ms with idp_access_token block highlighted

Ajouter les éléments de la revendication

  1. Ouvrez votre fichier TrustframeworkExtensions.xml et ajoutez l’élément ClaimType avec l’identificateur identityProviderAccessToken à l’élément ClaimsSchema :

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="identityProviderAccessToken">
          <DisplayName>Identity Provider Access Token</DisplayName>
          <DataType>string</DataType>
          <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
        </ClaimType>
        ...
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Ajoutez l’élément OutputClaim à l’élément TechnicalProfile pour chaque fournisseur d’identité OAuth 2.0 dont vous souhaitez avoir le jeton d’accès. L’exemple suivant montre l’élément ajouté au profil technique de Facebook :

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Enregistrez le fichier TrustframeworkExtensions.xml.

  4. Ouvrez le fichier de stratégie de votre partie de confiance, par exemple SignUpOrSignIn.xml, puis ajoutez l’élément OutputClaim à TechnicalProfile :

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. Enregistrez le fichier de stratégie.

Tester votre stratégie

Quand vous testez vos applications dans Azure AD B2C, il peut être utile de retourner le jeton Azure AD B2C à https://jwt.ms pour passer en revue les revendications qu’il contient.

Téléchargement des fichiers

  1. Connectez-vous au portail Azure.
  2. Si vous avez accès à plusieurs tenants (locataires), sélectionnez l’icône Paramètres dans le menu supérieur pour basculer vers votre tenant Azure AD B2C à partir du menu Annuaires + abonnements.
  3. Choisissez Tous les services dans le coin supérieur gauche du portail Azure, puis recherchez et sélectionnez Azure AD B2C.
  4. Sélectionnez Infrastructure d’expérience d’identité.
  5. Dans la page Stratégies personnalisées, cliquez sur Charger une stratégie.
  6. Activez Remplacer la stratégie si elle existe, puis recherchez et sélectionnez le fichier TrustframeworkExtensions.xml.
  7. Sélectionnez Télécharger.
  8. Répétez les étapes 5 à 7 pour le fichier de la partie de confiance (par exemple, SignUpOrSignIn.xml).

Exécuter la stratégie

  1. Ouvrez la stratégie que vous avez changée. Par exemple, B2C_1A_signup_signin.

  2. Pour Application, sélectionnez l’application que vous avez précédemment inscrite. Pour voir le jeton dans l’exemple ci-dessous, l’URL de réponse doit indiquer https://jwt.ms.

  3. Sélectionnez Exécuter maintenant.

    Vous devriez voir quelque chose de similaire à l’exemple suivant :

    Decoded token in jwt.ms with idp_access_token block highlighted

Transmettre le jeton d’actualisation du fournisseur d’identité (facultatif)

Le jeton d’accès retourné par le fournisseur d’identité est valide pendant un temps limité. Certains fournisseurs d’identité émettent également un jeton d’actualisation avec le jeton d’accès. Votre application cliente peut alors échanger ce jeton d’actualisation du fournisseur d'identité contre un nouveau jeton d’accès si nécessaire.

La stratégie personnalisée Azure AD B2C prend en charge la transmission du jeton d’accès de fournisseurs d’identité OAuth 2.0 (dont font partie Facebook, Google et GitHub).

Pour transmettre le jeton d’actualisation du fournisseur d’identité, procédez comme suit :

  1. Ouvrez votre fichier TrustframeworkExtensions.xml et ajoutez l’élément ClaimType suivant avec l’identificateur de identityProviderRefreshToken à l’élément ClaimsSchema.

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. Ajoutez l’élément OutputClaim à l’élément TechnicalProfile pour chaque fournisseur d’identité OAuth 2.0 pour lequel vous souhaitez avoir le jeton d’actualisation. L’exemple suivant montre l’élément ajouté au profil technique de Facebook :

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Certains fournisseurs d’identité vous obligent à insérer des métadonnées ou des étendues dans le profil technique du fournisseur d’identité.

    • Pour le fournisseur d’identité Google, ajoutez les deux types de revendications access_type et prompt. Ajoutez ensuite les revendications d’entrée suivantes au profil technique du fournisseur d’identité :

      <InputClaims>
          <InputClaim ClaimTypeReferenceId="access_type" PartnerClaimType="access_type" DefaultValue="offline" AlwaysUseDefaultValue="true" />
      
          <!-- The refresh_token is return only on the first authorization for a given user. Subsequent authorization request doesn't return the refresh_token.
              To fix this issue we add the prompt=consent query string parameter to the authorization request-->
          <InputClaim ClaimTypeReferenceId="prompt" PartnerClaimType="prompt" DefaultValue="consent" AlwaysUseDefaultValue="true" />
      </InputClaims>
      
    • D’autres fournisseurs d’identité peuvent avoir des méthodes différentes pour émettre un jeton d’actualisation. Suivez le public visé par le fournisseur d’identité et ajoutez les éléments nécessaires au profil technique de votre fournisseur d’identité.

  4. Enregistrez les modifications apportées dans votre fichier TrustframeworkExtensions.xml .

  5. Ouvrez le fichier de stratégie de votre partie de confiance, par exemple SignUpOrSignIn.xml, puis ajoutez l’élément OutputClaim à TechnicalProfile :

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. Enregistrez les modifications apportées dans votre fichier de stratégie de partie de confiance.

  7. Chargez le fichier TrustframeworkExtensions.xml, puis le fichier de stratégie de partie de confiance.

  8. Tester votre stratégie

Étapes suivantes

Apprenez-en davantage dans la présentation des jetons Azure AD B2C.