Přidání AD FS jako zprostředkovatele identity SAML pomocí vlastních zásad v Azure Active Directory B2C

Než začnete, pomocí selektoru Zvolit typ zásady zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu interakce uživatelů s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Kroky vyžadované v tomto článku se pro každou metodu liší.

Tato funkce je dostupná jenom pro vlastní zásady. Pro kroky nastavení vyberte v předchozím selektoru vlastní zásady .

Poznámka:

V Azure Active Directory B2C jsou vlastní zásady navržené především pro řešení složitých scénářů. Ve většině scénářů doporučujeme používat integrované toky uživatelů. Pokud jste to neudělali, přečtěte si informace o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami ve službě Active Directory B2C.

V tomto článku se dozvíte, jak povolit přihlášení k uživatelskému účtu služby AD FS pomocí vlastních zásad v Azure Active Directory B2C (Azure AD B2C). Přihlášení povolíte přidáním zprostředkovatele identity SAML do vlastních zásad.

Předpoklady

Vytvoření certifikátu podepsaného jeho držitelem (self-signed certificate)

Pokud ještě certifikát nemáte, můžete použít certifikát podepsaný svým držitelem. Certifikát podepsaný svým držitelem je certifikát zabezpečení, který není podepsaný certifikační autoritou (CA) a neposkytuje záruky zabezpečení certifikátu podepsaného certifikační autoritou.

Ve Windows použijte rutinu New-SelfSignedCertificate v PowerShellu k vygenerování certifikátu.

  1. Spuštěním následujícího příkazu PowerShellu vygenerujte certifikát podepsaný svým držitelem. -Subject Upravte argument podle potřeby pro vaši aplikaci a název tenanta Azure AD B2C, například contosowebapp.contoso.onmicrosoft.com. Můžete také upravit -NotAfter datum a určit jiné vypršení platnosti certifikátu.

    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. Na počítači s Windows vyhledejte a vyberte Spravovat uživatelské certifikáty.

  3. V části Certifikáty – Aktuální uživatel vyberte osobní>certifikáty>yourappname.yourtenant.onmicrosoft.com.

  4. Vyberte certifikát a pak vyberte Akce>Všechny úkoly>exportu.

  5. Vyberte Další>ano, exportujte privátní klíč>Další.

  6. Přijměte výchozí hodnoty formátu exportu souboru a pak vyberte Další.

  7. Povolte možnost Heslo , zadejte heslo pro certifikát a pak vyberte Další.

  8. Pokud chcete zadat umístění pro uložení certifikátu, vyberte Procházet a přejděte do libovolného adresáře.

  9. V okně Uložit jako zadejte název souboru a pak vyberte Uložit.

  10. Vyberte Next (Další)>Finish (Dokončit).

Aby služba Azure AD B2C přijala heslo k souboru .pfx, musí být heslo zašifrované pomocí možnosti TripleDES-SHA1 v nástroji Pro export z Úložiště certifikátů windows, a ne pomocí AES256-SHA256.

Vytvoření klíče zásad

Certifikát musíte uložit v tenantovi Azure AD B2C.

  1. Přihlaste se k portálu Azure.
  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
  3. V levém horním rohu webu Azure Portal zvolte Všechny služby a pak vyhledejte a vyberte Azure AD B2C.
  4. Na stránce Přehled vyberte rozhraní Identity Experience Framework.
  5. Vyberte Klíče zásad a pak vyberte Přidat.
  6. V nabídce Možnosti zvolte Upload.
  7. Zadejte název klíče zásady. Například, SAMLSigningCert. Předpona B2C_1A_ se automaticky přidá do názvu klíče.
  8. Vyhledejte a vyberte soubor .pfx certifikátu s privátním klíčem.
  9. Klikněte na Vytvořit.

Přidání zprostředkovatele deklarací identity

Pokud chcete, aby se uživatelé přihlásili pomocí účtu SLUŽBY AD FS, musíte účet definovat jako zprostředkovatele deklarací identity, se kterým může Azure AD B2C komunikovat prostřednictvím koncového bodu. Koncový bod poskytuje sadu deklarací identity, které Azure AD B2C používá k ověření ověření konkrétního uživatele.

Účet služby AD FS můžete definovat jako zprostředkovatele deklarací tím, že ho přidáte do elementu ClaimsProviders v souboru s příponou vaší zásady. Další informace najdete v tématu definování zprostředkovatele identity SAML.

  1. Otevřete Soubor TrustFrameworkExtensions.xml.

  2. Vyhledejte element ClaimsProviders . Pokud neexistuje, přidejte ho pod kořenový prvek.

  3. Přidejte nový ClaimsProvider následujícím způsobem:

    <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. Nahraďte your-AD-FS-domain názvem vaší domény služby AD FS a nahraďte hodnotu deklarace identityProvider výstupu dns (libovolná hodnota, která označuje vaši doménu).

  5. <ClaimsProviders> Vyhledejte oddíl a přidejte následující fragment kódu XML. Pokud už vaše zásada obsahuje SM-Saml-idp technický profil, přejděte k dalšímu kroku. Další informace najdete v tématu Správa relací jednotného přihlašování.

    <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. Soubor uložte.

Přidání cesty uživatele

V tuto chvíli je zprostředkovatele identity nastavený, ale zatím není k dispozici na žádné přihlašovací stránce. Pokud nemáte vlastní cestu uživatele, vytvořte duplikát existující cesty uživatele šablony, jinak pokračujte dalším krokem.

  1. Otevřete soubor TrustFrameworkBase.xml z úvodní sady.
  2. Najděte a zkopírujte celý obsah prvku UserJourney , který obsahuje Id="SignUpOrSignIn".
  3. Otevřete TrustFrameworkExtensions.xml a najděte element UserJourneys. Pokud prvek neexistuje, přidejte ho.
  4. Vložte celý obsah elementu UserJourney , který jste zkopírovali jako podřízený prvek UserJourneys .
  5. Přejmenujte ID cesty uživatele. Například, Id="CustomSignUpSignIn".

Přidání zprostředkovatele identity do cesty uživatele

Teď, když máte cestu uživatele, přidejte do cesty uživatele nového zprostředkovatele identity. Nejdřív přidáte tlačítko pro přihlášení a pak tlačítko propočítáte s akcí. Akce je technický profil, který jste vytvořili dříve.

  1. Najděte prvek kroku orchestrace, který zahrnuje Type="CombinedSignInAndSignUp"nebo Type="ClaimsProviderSelection" na cestě uživatelem. Obvykle se jedná o první krok orchestrace. Element ClaimsProviderSelections obsahuje seznam zprostředkovatelů identity, se kterými se uživatel může přihlásit. Pořadí prvků řídí pořadí tlačítek pro přihlášení, která jsou uživateli prezentována. Přidejte element XML ClaimsProviderSelection. Nastavte hodnotu TargetClaimsExchangeId na popisný název.

  2. V dalším kroku orchestrace přidejte element ClaimsExchange . Nastavte ID na hodnotu ID cílové výměny deklarací identity. Aktualizujte hodnotu TechnicalProfileReferenceId na ID technického profilu, který jste vytvořili dříve.

Následující KÓD XML ukazuje první dva kroky orchestrace cesty uživatele se zprostředkovatelem identity:

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

Konfigurace zásad předávající strany

Zásady předávající strany, například SignUpSignIn.xml, určují cestu uživatele, kterou azure AD B2C spustí. Najděte element DefaultUserJourney v rámci předávající strany. Aktualizujte ID reference tak, aby odpovídalo ID cesty uživatele, do kterého jste přidali zprostředkovatele identity.

V následujícím příkladu CustomSignUpSignIn je pro cestu uživatele nastavena hodnota ReferenceId na CustomSignUpSignIn:

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

Nahrání vlastních zásad

  1. Přihlaste se k portálu Azure.
  2. Na panelu nástrojů portálu vyberte ikonu Adresář a předplatné a pak vyberte adresář, který obsahuje vašeho tenanta Azure AD B2C.
  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
  4. V části Zásady vyberte Architekturu prostředí identit.
  5. Vyberte Nahrát vlastní zásady a potom nahrajte dva soubory zásad, které jste změnili, v následujícím pořadí: zásady rozšíření, například TrustFrameworkExtensions.xml, pak zásady předávající strany, například SignUpSignIn.xml.

Konfigurace vztahu důvěryhodnosti předávající strany služby AD FS

Pokud chcete službu AD FS použít jako zprostředkovatele identity v Azure AD B2C, musíte vytvořit vztah důvěryhodnosti předávající strany služby AD FS s metadaty SAML azure AD B2C. Následující příklad ukazuje adresu URL metadat SAML technického profilu Azure AD B2C:

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

Při použití vlastní domény použijte následující formát:

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

Nahraďte následující hodnoty:

  • název vašeho tenanta s názvem vašeho tenanta, například your-tenant.onmicrosoft.com.
  • název vaší domény s vlastním názvem domény, například login.contoso.com.
  • zásady s názvem zásady. Například B2C_1A_signup_signin_adfs.
  • váš technický profil s názvem vašeho technického profilu zprostředkovatele identity SAML. Například Contoso-SAML2.

Otevřete prohlížeč a přejděte na adresu URL. Ujistěte se, že jste zadali správnou adresu URL a že máte přístup k souboru metadat XML. Pokud chcete přidat nový vztah důvěryhodnosti předávající strany pomocí modulu snap-in Správa služby AD FS a ručně nakonfigurujte nastavení, proveďte na federačním serveru následující postup. Pro dokončení tohoto postupu je nutné členství v Správa istrátory nebo ekvivalenty v místním počítači.

  1. Ve Správci serveru vyberte Nástroje a poté vyberte Správa AD FS.

  2. Vyberte tlačítko Přidat vztah důvěryhodnosti předávající strany.

  3. Na úvodní stránce zvolte Deklarace identity a pak vyberte Spustit.

  4. Na stránce Vybrat zdroj dat vyberte Importovat data o publikování předávající strany online nebo v místní síti, zadejte adresu URL metadat Azure AD B2C a pak vyberte Další.

  5. Na stránce Zadat zobrazovaný název zadejte zobrazovaný název v části Poznámky, zadejte popis tohoto vztahu důvěryhodnosti předávající strany a pak vyberte Další.

  6. Na stránce Zvolit zásady řízení přístupu vyberte zásadu a pak vyberte Další.

  7. Na stránce Připraveno k přidání vztahu důvěryhodnosti zkontrolujte nastavení a pak výběrem možnosti Další uložte informace o důvěryhodnosti předávající strany.

  8. Na stránce Dokončit vyberte Zavřít, tato akce automaticky zobrazí dialogové okno Upravit pravidla deklarací identity.

  9. Vyberte položku Přidat pravidlo.

  10. V šabloně pravidla deklarace identity vyberte Možnost Odeslat atributy LDAP jako deklarace identity.

  11. Zadejte název pravidla deklarace identity. Pro úložiště atributů vyberte Vybrat službu Active Directory, přidejte následující deklarace identity a pak vyberte Dokončit a OK.

    Atribut LDAP Typ odchozí deklarace identity
    Hlavní název uživatele userPrincipalName (Hlavní název uživatele)
    Surname family_name
    Zadaný název given_name
    E-mailová adresa E-mail
    Zobrazovaný název name

    Všimněte si, že některé názvy se v rozevíracím seznamu typu odchozí deklarace identity nezobrazí. Musíte je zadat ručně. (Rozevírací seznam je možné upravit).

  12. Na základě typu certifikátu možná budete muset nastavit algoritmus HASH. V okně vlastností vztahu důvěryhodnosti předávající strany (B2C Demo) vyberte kartu Upřesnit a změňte algoritmus hash zabezpečení na SHA-256a vyberte ok.

  13. Ve Správci serveru vyberte Nástroje a poté vyberte Správa AD FS.

  14. Vyberte vztah důvěryhodnosti předávající strany, kterou jste vytvořili, vyberte Aktualizovat z federačních metadat a pak vyberte Aktualizovat.

Testování vlastních zásad

  1. Přihlaste se k portálu Azure.
  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
  4. V části Zásady vyberte Architekturu prostředí identit.
  5. Vyberte například zásadu B2C_1A_signup_signinpředávající strany.
  6. V části Aplikace vyberte webovou aplikaci, kterou jste předtím zaregistrovali. Adresa URL odpovědi by se měla zobrazit https://jwt.ms.
  7. Vyberte tlačítko Spustit hned.
  8. Na registrační nebo přihlašovací stránce vyberte Contoso AD FS a přihlaste se pomocí zprostředkovatele identity Contoso AD FS.

Pokud je proces přihlášení úspěšný, prohlížeč se přesměruje na https://jwt.msobsah tokenu vráceného službou Azure AD B2C.

Řešení potíží se službou AD FS

Služba AD FS je nakonfigurovaná tak, aby používala protokol aplikací systému Windows. Pokud máte problémy s nastavením služby AD FS jako zprostředkovatele identity SAML pomocí vlastních zásad v Azure AD B2C, můžete zkontrolovat protokol událostí SLUŽBY AD FS:

  1. Na panelu Windows Search zadejte Prohlížeč událostí a vyberte Prohlížeč událostí desktopovou aplikaci.
  2. Pokud chcete zobrazit protokol jiného počítače, klikněte pravým tlačítkem na Prohlížeč událostí (místní). Vyberte Připojení do jiného počítače a vyplňte pole, aby se dokončilo dialogové okno Vybrat počítač.
  3. V Prohlížeč událostí otevřete protokoly aplikací a služeb.
  4. Vyberte SLUŽBU AD FS a pak vyberte Správa.
  5. Pokud chcete zobrazit další informace o události, poklikejte na událost.

Požadavek SAML není podepsaný s očekávanou událostí algoritmu podpisu

Tato chyba značí, že požadavek SAML odeslaný službou Azure AD B2C není podepsaný očekávaným algoritmem podpisu nakonfigurovaným ve službě AD FS. Například požadavek SAML je podepsán pomocí algoritmu rsa-sha256podpisu , ale očekávaný podpis algoritmus je rsa-sha1. Pokud chcete tento problém vyřešit, ujistěte se, že azure AD B2C i AD FS jsou nakonfigurované se stejným algoritmem podpisu.

Možnost 1: Nastavení algoritmu podpisu v Azure AD B2C

Můžete nakonfigurovat, jak podepsat požadavek SAML v Azure AD B2C. Metadata XmlSignatureAlgorithm řídí hodnotu parametru SigAlg (řetězec dotazu nebo post parametr) v požadavku SAML. Následující příklad nakonfiguruje Azure AD B2C tak, aby používal rsa-sha256 algoritmus podpisu.

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

Možnost 2: Nastavení algoritmu podpisu ve službě AD FS

Případně můžete ve službě AD FS nakonfigurovat očekávaný algoritmus podpisu požadavku SAML.

  1. Ve Správci serveru vyberte Nástroje a poté vyberte Správa AD FS.
  2. Vyberte vztah důvěryhodnosti předávající strany, kterou jste vytvořili dříve.
  3. Vyberte Vlastnosti a pak vyberte Upřesnit.
  4. Nakonfigurujte algoritmus hash zabezpečení a výběrem ok uložte změny.

Požadavek HTTP-Redirect neobsahuje požadovaný parametr Signature pro podepsaný požadavek (AADB2C90168).

Možnost 1: Nastavení hodnoty ResponsesSigned na false v Azure AD B2C

Požadavek na podepsanou zprávu můžete zakázat v Azure AD B2C. Následující příklad nakonfiguruje Azure AD B2C tak, aby pro podepsanou žádost nepožaduje parametr Signature.

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

Možnost 2: Nastavení předávající strany ve službě AD FS pro podepsání zprávy i kontrolního výrazu

Případně můžete nakonfigurovat předávající stranu ve službě AD FS, jak je uvedeno níže:

  1. Otevřete PowerShell jako Správa istrator a spusťte Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion rutinu pro podepsání zprávy i kontrolního výrazu.
  2. Spusťte a potvrďte Set-AdfsRelyingPartyTrust -TargetName <RP Name> , že je vlastnost SamlResponseSignature nastavena jako MessageAndAssertion.