Partager via


Ajouter AD FS en tant que fournisseur d’identités SAML à l’aide de stratégies personnalisées 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.

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.

Notes

Dans Active Directory B2C, les stratégies personnalisées sont principalement conçues pour gérer des scénarios complexes. Pour la plupart des scénarios, nous vous recommandons de recourir à des flux d’utilisateurs intégrés. Si vous ne l’avez pas fait, découvrez le Pack de démarrage de stratégie personnalisée dans Prise en main des stratégies personnalisées dans Active Directory B2C.

Cet article explique comment activer la connexion d’un compte d’utilisateur AD FS à l’aide de stratégies personnalisées dans Azure Active Directory B2C (Azure AD B2C). Pour activer la connexion, vous devez ajouter un fournisseur d’identité SAML à une stratégie personnalisée.

Prérequis

Créer un certificat auto-signé

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.

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

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.

Ajout d’un fournisseur de revendications

Si vous souhaitez que les utilisateurs se connectent à l’aide d’un compte AD FS, vous devez définir le compte en tant que fournisseur de revendications avec lequel Azure AD B2C peut communiquer par le biais d’un point de terminaison. Le point de terminaison fournit un ensemble de revendications utilisées par Azure AD B2C pour vérifier qu’un utilisateur spécifique s’est authentifié.

Vous pouvez définir un compte AD FS en tant que fournisseur de revendications en l’ajoutant à l’élément ClaimsProviders dans le fichier d’extension de votre stratégie. Pour plus d’informations, consultez Définition d’un fournisseur d’identité 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 AD FS account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="WantsEncryptedAssertions">false</Item>
            <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="userPrincipalName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
            <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>
    
  4. Remplacez your-AD-FS-domain par le nom de votre domaine AD FS et remplacez la valeur de la revendication de sortie identityProvider par votre DNS (valeur arbitraire qui indique votre domaine).

  5. 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>
    
  6. Enregistrez le fichier .

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 une approbation de partie de confiance AD FS

Pour utiliser AD FS comme fournisseur d’identité dans AAD B2C, vous devez créer une approbation de partie de confiance AD FS avec les métadonnées SAML d’AAD B2C. L’exemple suivant montre une adresse URL aux métadonnées SAML d’un profil technique d’AAD 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. Pour ajouter une nouvelle approbation de partie de confiance en utilisant le composant logiciel enfichable de gestion ADFS et configurer manuellement les paramètres, effectuez la procédure suivante sur un serveur de fédération. L’appartenance au groupe Administrateurs ou à un groupe équivalent sur l’ordinateur local est la condition minimale requise pour effectuer cette procédure.

  1. Dans Gestionnaire de serveur, sélectionnez Outils, puis Gestion AD FS.

  2. Sélectionnez Ajouter une approbation de partie de confiance.

  3. Dans la page Bienvenue, choisissez Prise en charge des revendications, puis sélectionnez Démarrer.

  4. Dans la page Sélectionner une source de données, sélectionnez Importer les données, publiées en ligne ou sur un réseau local, concernant la partie de confiance, fournissez votre URL de métadonnées AAD B2C, puis sélectionnez Suivant.

  5. Dans la page Indiquer le nom complet, entrez un Nom d’affichage. Sous Notes, entrez une description pour cette approbation de partie de confiance, puis sélectionnez Suivant.

  6. Dans la page Sélectionner une stratégie de contrôle d’accès, choisissez une stratégie, puis sélectionnez Suivant.

  7. Sur la page Prêt à ajouter l’approbation, passez en revue les paramètres, puis sélectionnez Suivant pour enregistrer vos informations d’approbation de partie de confiance.

  8. Sur la page Terminer, sélectionnez Fermer. Cette action affiche automatiquement la boîte de dialogue Modifier les règles de revendication.

  9. Sélectionnez Ajouter une règle.

  10. Dans Modèle de règle de revendication, sélectionnez Envoyer les attributs LDAP en tant que revendications.

  11. Fournissez un Nom de règle de revendication. Pour le Magasin d’attributs choisissez Sélectionner Active Directory, ajoutez les revendications suivantes, puis sélectionnez Terminer et OK.

    Attribut LDAP Type de revendication sortante
    User-Principal-Name userPrincipalName
    Surname family_name
    Given-Name given_name
    E-Mail-Address email
    Display-Name name

    Notez que certains des noms ne s’afficheront pas dans la liste déroulante Type de revendication sortante. Vous devez les saisir manuellement. (La liste déroulante est modifiable).

  12. Selon votre type de certificat, il se peut que vous deviez définir l’algorithme de hachage. Dans la fenêtre de propriétés de l’approbation de partie de confiance (Démo B2C), sélectionnez l’onglet Avancé, définissez l’Algorithme de hachage sécurisé sur SHA-256, puis sélectionnez OK.

  13. Dans Gestionnaire de serveur, sélectionnez Outils, puis Gestion AD FS.

  14. Sélectionnez l’approbation de partie de confiance que vous avez créée, choisissez Mettre à jour à partir des métadonnées de fédération, puis sélectionnez Mettre à jour.

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. Sur la page d’inscription ou de connexion, sélectionnez Contoso AD FS pour vous connecter avec le fournisseur d’identité Contoso AD FS.

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.

Dépannage du service AD FS

AD FS est configuré pour utiliser le journal des applications Windows. Si vous rencontrez des difficultés lors de la configuration d’AD FS en tant que fournisseur d’identité SAML à l’aide de stratégies personnalisées dans Azure AD B2C, vous pouvez consulter le journal des événements AD FS :

  1. Dans le Volet de recherche Windows, tapez Observateur d’événements, puis sélectionnez l’application de bureau Observateur d’événements.
  2. Pour afficher le journal d’un autre ordinateur, cliquez avec le bouton droit sur Observateur d’événements (local) . Sélectionnez Se connecter à un autre ordinateur, puis renseignez les champs de la boîte de dialogue Sélectionner un ordinateur.
  3. Dans l’Observateur d’événements, ouvrez Journaux des applications et des services.
  4. Sélectionnez AD FS, puis Administrateur.
  5. Pour obtenir plus de détails sur un événement particulier, double-cliquez sur cet événement.

La demande SAML n’est pas signée avec l’événement d’algorithme de signature attendu

Cette erreur indique que la demande SAML envoyée par Azure AD B2C n’est pas signée avec l’algorithme de signature attendu configuré dans AD FS. Par exemple, la demande SAML est signée avec l’algorithme de signature rsa-sha256, tandis que l’algorithme de signature attendu est rsa-sha1. Pour résoudre ce problème, assurez-vous qu’Azure AD B2C et AD FS sont configurés avec le même algorithme de signature.

Option 1 : Définir l’algorithme de signature dans Azure AD B2C

Vous pouvez configurer la manière de signer la demande SAML dans Azure AD B2C. Les métadonnées XmlSignatureAlgorithm contrôlent la valeur du paramètre SigAlg (chaîne de requête ou paramètre d’envoi) dans la demande SAML. L’exemple suivant configure Azure AD B2C pour utiliser l’algorithme de signature rsa-sha256.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>

Option n°2 : Définir l’algorithme de signature dans AD FS

Vous pouvez également configurer l’algorithme de signature de demande SAML attendu dans AD FS.

  1. Dans Gestionnaire de serveur, sélectionnez Outils, puis Gestion AD FS.
  2. Sélectionnez l'approbation de la partie de confiance que vous avez créée précédemment.
  3. Sélectionner Propriétés, puis Avancer
  4. Configurez l’Algorithme de hachage sécurisé, puis sélectionnez OK pour enregistrer les modifications.

La demande HTTP-Redirect ne contient pas le paramètre requis « Signature » pour une demande signée (AADB2C90168)

Option 1 : définir ResponsesSigned sur false dans Azure AD B2C

Vous pouvez désactiver la spécification du message signé dans Azure AD B2C. L’exemple suivant configure Azure AD B2C pour ne pas exiger le paramètre « Signature » pour la demande signée.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="ResponsesSigned">false</Item>
</Metadata>

Option 2 : définir la partie de confiance dans AD FS pour signer le message et l’assertion

Vous pouvez également configurer la partie de confiance dans AD FS comme indiqué ci-dessous :

  1. Ouvrez PowerShell en tant qu’administrateur et exécutez l’applet de commande Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion pour signer le message et l’assertion.
  2. Exécutez Set-AdfsRelyingPartyTrust -TargetName <RP Name> et vérifiez que la propriété SamlResponseSignature est définie sur MessageAndAssertion.