Configurer l’inscription et la connexion avec un fournisseur d’identité SAML dans Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) prend en charge la fédération avec des fournisseurs d’identité SAML 2.0. Cet article explique comment activer la connexion avec un compte d’utilisateur de fournisseur d’identité SAML, ce qui permet aux utilisateurs de se connecter avec leurs identités sociales ou d’entreprise existantes, comme ADFS ou Salesforce.

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.

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.

Présentation du scénario

Vous pouvez configurer Azure AD B2C pour permettre aux utilisateurs de se connecter à votre application avec des informations d’identification de fournisseurs d’identité SAML de réseau social ou d’entreprise externes. Quand Azure AD B2C fédère avec un fournisseur d’identité SAML, il fait office de fournisseur de services qui envoie une demande SAML au fournisseur d’identité SAML et qui attend une réponse SAML. Dans le schéma suivant :

  1. L’application envoie une demande d’autorisation à Azure AD B2C. L’application peut être une application OAuth 2.0 ou OpenID Connect, ou un fournisseur de services SAML.
  2. Dans la page de connexion Azure AD B2C, l’utilisateur choisit de se connecter avec un compte de fournisseur d’identité SAML (par exemple, contoso). Azure AD B2C envoie une demande d’autorisation SAML et dirige l’utilisateur vers le fournisseur d’identité SAML pour effectuer la connexion.
  3. Le fournisseur d’identité SAML retourne une réponse SAML.
  4. Azure AD B2C valide le jeton SAML, extrait les revendications, émet son propre jeton et ramène l’utilisateur à l’application.

Sign in with SAML identity provider flow

Prérequis

Composants de la solution

Pour ce scénario, les composants suivants sont nécessaires :

  • Un fournisseur de services SAML avec la possibilité de recevoir et de décoder des demandes SAML, ainsi que d’y répondre à partir d’Azure AD B2C.
  • Un point de terminaison de métadonnées SAML disponible publiquement pour votre fournisseur d’identité.
  • Un locataire Azure AD B2C.

Important

Vos points de terminaison doivent respecter les exigences d’Azure AD B2C en matière de sécurité. Les versions et les chiffrements TLS antérieurs sont déconseillés. Pour plus d’informations, consultez Configuration requise pour TLS et les suites de chiffrement Azure AD B2C.

Création d’une clé de stratégie

Pour créer une confiance entre Azure AD B2C et votre fournisseur d’identité SAML, vous devez fournir un certificat X509 valide avec la clé privée. Azure AD B2C signe les demandes SAML à l’aide de la clé privée du certificat. Le fournisseur d’identité valide la demande à l’aide de la clé publique du certificat. La clé publique est accessible via les métadonnées du profil technique. En guise d’alternative, vous pouvez charger manuellement le fichier .cer vers votre fournisseur d’identité SAML.

Un certificat auto-signé est acceptable pour la plupart des scénarios. Pour les environnements de production, nous vous recommandons d’utiliser un certificat X509 émis par une autorité de certification. En outre, comme décrit plus loin dans ce document, pour un environnement hors production, vous pouvez désactiver la signature SAML des deux côtés.

Obtenir un certificat

Si vous n’avez pas encore de certificat, vous pouvez utiliser un certificat auto-signé. Un certificat auto-signé est un certificat de sécurité qui n’est pas signé par une autorité de certification et qui n’offre pas les garanties de sécurité d’un certificat signé par une autorité de certification.

Sur Windows, utilisez l’applet de commande New-SelfSignedCertificate dans PowerShell pour générer un certificat.

  1. Exécutez la commande PowerShell suivante pour générer un certificat auto-signé. Modifiez l’argument -Subject comme il convient pour votre application et le nom de locataire Azure AD B2C, comme contosowebapp.contoso.onmicrosoft.com. Vous pouvez également ajuster la date de -NotAfter pour spécifier un délai d’expiration différent pour le certificat.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Sur un ordinateur Windows, recherchez et sélectionnez Gérer les certificats utilisateur

  3. Sous Certificats - Utilisateur actuel, sélectionnez Personnel>Certificats>votrenomdappli.votrelocataire.onmicrosoft.com.

  4. Choisissez le certificat, puis sélectionnez Action>Toutes les tâches>Exporter.

  5. Sélectionnez Suivant>Oui, exporter la clé privée>Suivant.

  6. Acceptez les valeurs par défaut pour Format de fichier d’exportation, puis sélectionnez Suivant.

  7. Activez l’option Mot de passe, entrez un mot de passe pour le certificat, puis sélectionnez Suivant.

  8. Pour spécifier un emplacement d’enregistrement de votre certificat, sélectionnez Parcourir et accédez à un répertoire de votre choix.

  9. Dans la fenêtre Enregistrer sous, entrez un Nom de fichier, puis sélectionnez Enregistrer.

  10. Sélectionnez Suivant>Terminer.

Pour qu’Azure AD B2C accepte le mot de passe du fichier .pfx, celui-ci doit être chiffré à l’aide de l’option TripleDES-SHA1 de l’utilitaire d’exportation du magasin de certificats Windows, par opposition à AES256-SHA256.

Téléchargement du certificat

Vous devez enregistrer votre certificat dans votre client Azure AD B2C.

  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. Dans la page de vue d’ensemble, sélectionnez Infrastructure d’expérience d’identité.
  5. Sélectionnez Clés de stratégie, puis Ajouter.
  6. Pour Options, choisissez Upload.
  7. Entrez un nom pour la clé de stratégie. Par exemple : SAMLSigningCert. Le préfixe B2C_1A_ est ajouté automatiquement au nom de votre clé.
  8. Recherchez et sélectionnez votre fichier de certificat .pfx contenant la clé privée.
  9. Cliquez sur Créer.

Configurer le profil technique SAML

Définissez le fournisseur d’identité SAML en l’ajoutant à l’élément ClaimsProviders dans le fichier d’extension de votre stratégie. Les fournisseurs de revendications ont un profil technique SAML qui détermine les points de terminaison et les protocoles nécessaires pour communiquer avec le fournisseur d’identité SAML. Pour ajouter un fournisseur de revendications avec un profil technique SAML :

  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>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-SAML2">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your SAML identity provider account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="http://schemas.microsoft.com/identity/claims/displayname" />
            <OutputClaim ClaimTypeReferenceId="email"  />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Mettez à jour les éléments XML suivants avec la valeur appropriée :

Élément XML Value
ClaimsProvider\Domain Nom de domaine utilisé pour la connexion directe. Entrez le nom de domaine que vous souhaitez utiliser pour la connexion directe. Par exemple, Contoso.com.
TechnicalProfile\DisplayName Cette valeur s’affiche sur le bouton Se connecter dans votre écran de connexion. Par exemple, Contoso.
Metadata\PartnerEntity URL des métadonnées du fournisseur d’identité SAML. Vous pouvez également copier les métadonnées du fournisseur d’identité et les ajouter à l’intérieur de l’élément CDATA <![CDATA[Your IDP metadata]]>.

Mapper les revendications

L’élément OutputClaims contient une liste de revendications que le fournisseur d’identité SAML retourne. Mappez le nom de la revendication qui est définie dans votre stratégie sur le nom d’assertion qui est défini dans le fournisseur d’identité. Contactez votre fournisseur d’identité pour obtenir la liste des revendications (assertions). Pour plus d’informations, consultez Mappage des revendications.

Dans l’exemple ci-dessus, Contoso-SAML2 comprend les revendications retournées par un fournisseur d’identité SAML :

  • La revendication assertionSubjectName est mappée à la revendication issuerUserId.
  • Revendication first_name mappée à la revendication givenName.
  • Revendication last_name mappée à la revendication surname.
  • La revendication http://schemas.microsoft.com/identity/claims/displayname est mappée à la revendication displayName.
  • La revendication email sans mappage de nom.

Le profil technique retourne également des revendications qui ne sont pas retournées par le fournisseur d’identité :

  • La revendication identityProvider contenant le nom du fournisseur d’identité.
  • La revendication authenticationSource avec la valeur par défaut socialIdpAuthentication.

Ajouter le profil technique de session SAML

Si vous n’avez pas encore de profil technique de session SAML SM-Saml-idp, ajoutez-en un à votre stratégie d’extension. Recherchez la section <ClaimsProviders> et ajoutez l’extrait de code XML suivant. Si votre stratégie contient déjà le profil technique SM-Saml-idp, passez à l’étape suivante. Pour plus d’informations, voir Gestion de sessions d’authentification unique.

<ClaimsProvider>
  <DisplayName>Session Management</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="SM-Saml-idp">
      <DisplayName>Session Management Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="IncludeSessionIndex">false</Item>
        <Item Key="RegisterServiceProviders">false</Item>
      </Metadata>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Ajouter un parcours utilisateur

À ce stade, le fournisseur d’identité a été configuré, mais il n’est encore disponible dans aucune des pages de connexion. Si vous n’avez pas votre propre parcours utilisateur personnalisé, créez un doublon d’un modèle de parcours utilisateur 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 comprenant Id="SignUpOrSignIn".
  3. Ouvrez le fichier TrustFrameworkExtensions.xml, puis recherchez l’élément UserJourneys. Si l’élément n’existe pas, ajoutez-en un.
  4. Collez l’intégralité du 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".

Ajoutez le fournisseur d’identité à un parcours utilisateur

Maintenant que vous disposez d’un parcours utilisateur, ajoutez-y le nouveau fournisseur d’identité. Vous ajoutez d’abord un bouton de connexion, puis vous liez le bouton à une action. L’action représente le profil technique que vous avez créé plus haut.

  1. Recherchez l’élément d’étape d’orchestration comprenant 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 détermine l’ordre des boutons de connexion présentés à l’utilisateur. Ajoutez un élément XML ClaimsProviderSelection. Définissez la valeur TargetClaimsExchangeId sur un nom convivial.

  2. À la prochaine étape d’orchestration, 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éé précédemment.

Le code XML suivant montre 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-SAML2" />
  </ClaimsExchanges>
</OrchestrationStep>

Configurer la stratégie de partie de confiance

La stratégie de partie de confiance, par exemple SignUpSignIn.xml, spécifie le parcours utilisateur à partir duquel Azure AD B2C s’exécutera. Recherchez l’élément DefaultUserJourney dans la partie de confiance. Mettez à jour la valeur ReferenceId afin qu’elle corresponde à l’ID du parcours utilisateur auquel vous avez ajouté le fournisseur d'identité.

Dans l’exemple suivant, pour le parcours utilisateur CustomSignUpSignIn, la valeur ReferenceId est définie sur CustomSignUpSignIn :

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

Téléchargez la stratégie personnalisée

  1. Connectez-vous au portail Azure.
  2. Sélectionnez l’icône Annuaire et abonnement dans la barre d’outils du portail, puis sélectionnez l’annuaire qui contient votre locataire Azure AD B2C.
  3. Dans la 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, puis la stratégie de la partie de confiance, par exemple SignUpSignIn.xml.

Configurer votre fournisseur d’identité SAML

Une fois votre stratégie configurée, vous devez configurer votre fournisseur d’identité SAML avec les métadonnées SAML Azure AD B2C. Les métadonnées SAML sont des informations qui sont utilisées dans le protocole SAML pour exposer la configuration de votre stratégie (le fournisseur de services). Elles définissent l’emplacement des services, tels que la connexion et la déconnexion, les certificats, la méthode de connexion et plus encore.

Les étapes de configuration d’un fournisseur de services sont différentes pour chaque fournisseur d’identité SAML. Certains fournisseurs d’identité SAML demandent les métadonnées Azure AD B2C, tandis que d’autres vous demandent de parcourir le fichier de métadonnées manuellement et de fournir les informations nécessaires. Pour obtenir des indications, consultez la documentation de votre fournisseur d’identité.

L’exemple suivant montre l’adresse URL des métadonnées SAML d’un profil technique Azure AD B2C :

https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Avec un domaine personnalisé, utilisez le format suivant :

https://your-domain-name/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Remplacez les valeurs suivantes :

  • your-tenant-name avec le nom de votre locataire, par exemple your-tenant.onmicrosoft.com.
  • your-domain-name avec votre nom de domaine personnalisé, tel que login.contoso.com.
  • your-policy par le nom de votre stratégie. Par exemple, B2C_1A_signup_signin_adfs.
  • your-technical-profile par le nom du profil technique de votre fournisseur d’identité SAML. Par exemple, Contoso-SAML2.

Ouvrez un navigateur et accédez à l’URL. Veillez à taper l’URL est correcte pour avoir accès au fichier de métadonnées XML.

Tester votre stratégie personnalisée

  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. Dans la Portail Azure, recherchez et sélectionnez Azure AD B2C.
  4. Sous Stratégies, sélectionnez Identity Experience Framework.
  5. Sélectionnez votre stratégie de partie de confiance, par exemple B2C_1A_signup_signin.
  6. Pour Application, sélectionnez une application web que vous avez précédemment inscrite. L’URL de réponse doit être https://jwt.ms.
  7. Sélectionnez le bouton Exécuter maintenant.
  8. Dans la page d’inscription ou de connexion, sélectionnez Contoso pour vous connecter avec un compte 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.

Étapes suivantes