Partager via


Configurer l’inscription et la connexion avec OpenID Connect générique à l’aide d’Azure Active Directory B2C

Important

À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.

Avant de commencer, utilisez le sélecteur Choisir un type de stratégie en haut de cette page 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.

OpenID Connect est un protocole d’authentification basé sur OAuth 2.0 qui peut être utilisé pour la connexion sécurisée des utilisateurs. La plupart des fournisseurs d’identité qui utilisent ce protocole sont pris en charge dans Azure AD B2C.

Cet article explique comment vous pouvez ajouter des fournisseurs d’identité OpenID Connect personnalisés à vos flux d’utilisateurs.

Important

Vos points de terminaison doivent respecter les exigences de sécurité Azure AD B2C. Les versions et les chiffrements TLS plus anciens sont déconseillés. Pour plus d’informations, consultez la configuration requise pour azure AD B2C TLS et la suite de chiffrement.

Conditions préalables

Ajouter le fournisseur d’identité

  1. Connectez-vous au portail Azure avec un compte disposant au moins des privilèges d’administrateur du fournisseur d’identité externe .
  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 AD B2C.
  4. Sélectionnez Fournisseurs d’identité, puis nouveau fournisseur OpenID Connect.
  5. Saisissez un Nom. Par exemple, entrez Contoso.

Définissez le fournisseur d’identité OpenId Connect en l’ajoutant à l’élément ClaimsProviders dans le fichier d’extension de votre stratégie.

  1. Ouvrez le fichier TrustFrameworkExtensions.xml.

  2. Recherchez l’élément ClaimsProviders . S’il n’existe pas, ajoutez-le sous l’élément racine.

  3. Ajoutez un nouveau ClaimsProvider comme suit :

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Configurer le fournisseur d’identité

Chaque fournisseur d’identité OpenID Connect décrit un document de métadonnées qui contient la plupart des informations requises pour effectuer la connexion. Le document de métadonnées comprend des informations telles que les URL à utiliser et l’emplacement des clés de signature publiques du service. Le document de métadonnées OpenID Connect se trouve toujours sur un point de terminaison qui se termine par .well-known/openid-configuration. Pour le fournisseur d’identité OpenID Connect que vous souhaitez ajouter, entrez son URL de métadonnées.

Dans l’URL des métadonnées, entrez l’URL du document de métadonnées OpenID Connect.

Dans les métadonnées du <Item Key="METADATA"> profil technique, saisissez l’URL du document de métadonnées OpenID Connect.

ID client et clé secrète

Pour permettre aux utilisateurs de se connecter, le fournisseur d’identité demande aux développeurs d’inscrire une application dans leur service. Cette application possède un ID appelé ID client et une clé secrète client.

Le secret client est facultatif. Toutefois, vous devez fournir une clé secrète client si le type de réponse est code, qui utilise la clé secrète pour échanger le code contre le jeton.

Pour ajouter l’ID client et la clé secrète client, copiez ces valeurs à partir du fournisseur d’identité et entrez-les dans les champs correspondants.

Dans les métadonnées du <Item Key="client_id"> profil technique, entrez l’ID client.

Créer une clé de stratégie

Si la clé secrète client est requise, stockez celle que vous avez enregistrée dans votre locataire Azure AD B2C.

  1. Connectez-vous au portail Azure.

  2. Veillez à bien utiliser l’annuaire qui contient votre locataire Azure AD B2C. Sélectionnez le filtre Annuaire + abonnement dans la barre d’outils du portail.

  3. 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.

  4. Choisissez tous les services dans le coin supérieur gauche du portail Azure, puis recherchez et sélectionnez Azure AD B2C.

  5. Dans la page Vue d’ensemble, sélectionnez Identity Experience Framework.

  6. Sélectionnez Clés de stratégie , puis sélectionnez Ajouter.

  7. Pour options, choisissez Manual.

  8. Entrez un nom pour la clé de stratégie. Par exemple : ContosoSecret. Le préfixe B2C_1A_ est ajouté automatiquement au nom de votre clé.

  9. Dans Secret, entrez votre clé secrète client que vous avez enregistrée précédemment.

  10. Pour l’utilisation de la clé, sélectionnez Signature.

  11. Cliquez sur Créer.

  12. Dans l’élément CryptographicKeys XML, ajoutez l’élément suivant :

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Étendue

L’étendue définit les informations et les autorisations que vous souhaitez recueillir auprès de votre fournisseur d’identité, par exemple openid profile. Pour recevoir le jeton d’ID du fournisseur d’identité, l’étendue openid doit être spécifiée.

Sans le jeton d’ID, les utilisateurs ne peuvent pas se connecter à Azure AD B2C à l’aide du fournisseur d’identité personnalisé. D’autres étendues peuvent être ajoutées séparées par un espace. Reportez-vous à la documentation du fournisseur d’identité personnalisé pour afficher les autres étendues pouvant être disponibles.

Dans Scope (Étendue), entrez les étendues du fournisseur d’identité. Par exemple : openid profile.

Dans les métadonnées du profil technique <Item Key="scope">, entrez les étendues du fournisseur d’identité. Par exemple : openid profile.

Type de réponse

Le type de réponse décrit le type d’informations renvoyées lors de l’appel initial au authorization_endpoint fournisseur d’identité personnalisé. Les types de réponse suivants peuvent être utilisés :

  • code: Conformément au flux de code d’autorisation, un code est renvoyé à Azure AD B2C. Azure AD B2C procède à l'appel de token_endpoint pour échanger le code contre le jeton.
  • id_token : un jeton d’ID est renvoyé à Azure AD B2C par le fournisseur d’identité personnalisé.

Dans le type de réponse, sélectionnez codeou id_token, en fonction des paramètres de votre fournisseur d’identité.

Dans les métadonnées du <Item Key="response_types"> profil technique, sélectionnez codeou id_token en fonction des paramètres de votre fournisseur d’identité.

Mode réponse

Le mode de réponse définit la méthode qui doit être utilisée pour renvoyer les données du fournisseur d’identité personnalisé à Azure AD B2C. Les modes de réponse suivants peuvent être utilisés :

  • form_post: Ce mode de réponse est recommandé pour une meilleure sécurité. La réponse est transmise via la méthode HTTP POST , le code ou le jeton étant encodé dans le corps à l’aide du application/x-www-form-urlencoded format.
  • query: Le code ou le jeton est renvoyé en tant que paramètre de requête.

En mode de réponse, sélectionnez form_postou query, en fonction des paramètres de votre fournisseur d’identité.

Dans les métadonnées du <Item Key="response_mode"> profil technique, sélectionnez form_post, ou query, en fonction des paramètres de votre fournisseur d’identité.

Indication de domaine

L’indicateur de domaine peut être utilisé pour accéder directement à la page de connexion du fournisseur d’identité spécifié, au lieu de demander à l’utilisateur d’effectuer une sélection dans la liste des fournisseurs d’identité disponibles.

Pour autoriser ce type de comportement, entrez une valeur pour l’indicateur de domaine. Pour accéder au fournisseur d’identité personnalisé, ajoutez le paramètre domain_hint=<domain hint value> à la fin de votre demande lorsque vous appelez Azure AD B2C pour la connexion.

Dans l’indicateur de domaine, entrez un nom de domaine utilisé dans l’indicateur de domaine.

Dans l’élément XML du <Domain>contoso.com</Domain> profil technique, entrez un nom de domaine utilisé dans l’indicateur de domaine. Par exemple : contoso.com.

Mappage des revendications

Une fois que le fournisseur d’identité personnalisé renvoie un jeton d’ID à Azure AD B2C, Azure AD B2C doit être en mesure de mapper les revendications du jeton reçu aux revendications qu’Azure AD B2C reconnaît et utilise. Pour chacun des mappages suivants, reportez-vous à la documentation du fournisseur d’identité personnalisé pour comprendre les revendications qui sont renvoyées dans les jetons du fournisseur d’identité :

  • ID utilisateur : entrez la revendication qui fournit l’identificateur unique de l’utilisateur connecté.
  • Nom d’affichage : Entrez la revendication qui fournit le nom d’affichage ou le nom complet de l’utilisateur.
  • Prénom : entrez la revendication qui fournit le prénom de l'utilisateur.
  • Nom de famille : Entrez la revendication qui fournit le nom de famille de l’utilisateur.
  • E-mail : Entrez la revendication qui fournit l’adresse e-mail de l’utilisateur.

L’élément OutputClaims contient une liste des revendications renvoyées par votre fournisseur d’identité. Mappez le nom de la revendication définie dans votre stratégie au nom défini dans le fournisseur d’identité. Sous l’élément <OutputClaims> , configurez l’attribut PartnerClaimType avec le nom de revendication correspondant, tel que défini par votre fournisseur d’identité.

ClaimTypeReferenceId Type de réclamation partenaire
issuerUserId Entrez la revendication qui fournit l’identificateur unique de l’utilisateur connecté.
displayName Entrez la revendication qui fournit le nom d’affichage ou le nom complet de l’utilisateur.
givenName Entrez la revendication qui fournit le prénom de l’utilisateur.
surName Entrez la revendication qui fournit le nom de famille de l’utilisateur.
email Entrez la revendication qui fournit l’adresse e-mail de l’utilisateur.
identityProvider Entrez l'affirmation qui fournit le nom de l’émetteur du jeton. Par exemple : iss. Si le fournisseur d’identité n’inclut pas la revendication de l’émetteur dans le jeton, définissez l’attribut DefaultValue avec un identifiant unique de votre fournisseur d’identité. Par exemple : DefaultValue="contoso.com".

Ajouter le fournisseur d’identité à un flux d’utilisateur

  1. Dans votre tenant Azure AD B2C, sélectionnez Flux d’utilisateurs.
  2. Cliquez sur le flux d’utilisateurs auquel vous souhaitez ajouter le fournisseur d’identité.
  3. Sous Fournisseurs d’identité sociale, sélectionnez le fournisseur d’identité que vous avez ajouté. Par exemple, Contoso.
  4. Cliquez sur Enregistrer.

Tester votre flux utilisateur

  1. Pour tester votre stratégie, sélectionnez Exécuter le flux utilisateur.
  2. Pour l’application, sélectionnez l’application web nommée testapp1 que vous avez inscrite précédemment. L’URL de réponse doit être https://jwt.ms.
  3. Sélectionnez le bouton Exécuter le flux utilisateur .
  4. Sur la page d’inscription ou de connexion, sélectionnez le fournisseur d’identité auquel vous souhaitez vous connecter. Par exemple, Contoso.

Si le processus de connexion réussit, votre navigateur est redirigé vers https://jwt.ms, qui affiche le contenu du jeton retourné par Azure AD B2C.

Ajouter un parcours utilisateur

À ce stade, le fournisseur d'identité a été configuré, mais il n'est pas encore disponible dans aucune des pages de connexion. Si vous n’avez pas votre propre parcours utilisateur personnalisé, créez un doublon d’un parcours utilisateur de modèle existant, sinon passez à l’étape suivante.

  1. Ouvrez le fichier TrustFrameworkBase.xml à partir du pack de démarrage.
  2. Recherchez et copiez l’intégralité du contenu de l’élément UserJourney qui inclut Id="SignUpOrSignIn".
  3. Ouvrez le TrustFrameworkExtensions.xml et recherchez l’élément UserJourneys . Si l’élément n’existe pas, ajoutez-en un.
  4. Collez tout le contenu de l’élément UserJourney que vous avez copié en tant qu’enfant de l’élément UserJourneys .
  5. Renommez l’ID du parcours utilisateur. Par exemple : Id="CustomSignUpSignIn".

Ajouter le fournisseur d’identité à un parcours utilisateur

Maintenant que vous disposez d’un parcours utilisateur, ajoutez le nouveau fournisseur d’identité au parcours utilisateur. Vous ajoutez d’abord un bouton de connexion, puis liez le bouton à une action. L'action correspond au profil technique que vous avez créé précédemment.

  1. Recherchez l’élément d’étape d’orchestration qui inclut Type="CombinedSignInAndSignUp"ou Type="ClaimsProviderSelection" dans le parcours utilisateur. Il s’agit généralement de la première étape d’orchestration. L’élément ClaimsProviderSelections contient une liste de fournisseurs d’identité auxquels un utilisateur peut se connecter. L’ordre des éléments contrôle l’ordre des boutons de connexion présentés à l’utilisateur. Ajoutez un élément XML ClaimsProviderSelection . Définissez la valeur de TargetClaimsExchangeId sur un nom convivial.

  2. À l’étape d’orchestration suivante, ajoutez un élément ClaimsExchange . Définissez ID sur la valeur de l’ID d’échange des revendications cible. Mettez à jour la valeur de TechnicalProfileReferenceId sur l’ID du profil technique que vous avez créé.

Le code XML suivant illustre les deux premières étapes d’orchestration d’un parcours utilisateur avec le fournisseur d’identité :

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

Configurer la stratégie de partie de confiance

La politique de partie de confiance, par exemple SignUpSignIn.xml, spécifie le parcours utilisateur qu'Azure AD B2C exécutera. Recherchez l’élément DefaultUserJourney dans la partie de confiance. Mettez à jour le ReferenceId pour qu'il corresponde à l'identifiant du parcours utilisateur dans lequel vous avez ajouté le fournisseur d'identité.

Dans l’exemple suivant, pour le CustomSignUpSignIn parcours utilisateur, l’Id de référence est défini sur CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Charger la politique personnalisée

  1. Connectez-vous au portail Azure.
  2. Sélectionnez l’icône Répertoire + Abonnement dans la barre d’outils du portail, puis sélectionnez le répertoire qui contient votre locataire Azure AD B2C.
  3. Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
  4. Sous Stratégies, sélectionnez Identity Experience Framework.
  5. Sélectionnez Charger une stratégie personnalisée, puis chargez les deux fichiers de stratégie que vous avez modifiés, dans l’ordre suivant : la stratégie d’extension, par exemple TrustFrameworkExtensions.xml, la stratégie de partie de confiance, telle que SignUpSignIn.xml.
  1. Sélectionnez votre stratégie de partie de confiance, par exemple B2C_1A_signup_signin.
  2. Pour l’application, sélectionnez une application web que vous avez inscrite précédemment. L’URL de réponse doit être https://jwt.ms.
  3. Sélectionnez le bouton Exécuter maintenant .
  4. À partir de la page d’inscription ou de connexion, sélectionnez Contoso pour vous connecter avec un compte Google.

Si le processus de connexion réussit, votre navigateur est redirigé vers https://jwt.ms, qui affiche le contenu du jeton retourné par Azure AD B2C.

Problèmes connus

  • Azure AD B2C ne prend pas en charge JWE (JSON Web Encryption) pour l’échange de jetons chiffrés avec les fournisseurs d’identité OpenID connect.

Étapes suivantes

Pour plus d’informations, consultez le guide de référence du profil technique OpenId Connect .