Nastavení registrace a přihlášení pomocí zprostředkovatele identity SAML pomocí Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) podporuje federaci se zprostředkovateli identit SAML 2.0. V tomto článku se dozvíte, jak povolit přihlášení pomocí uživatelského účtu zprostředkovatele identity SAML, což uživatelům umožňuje přihlásit se pomocí stávajících sociálních nebo podnikových identit, jako je ADFS a Salesforce.

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 .

Přehled scénáře

Azure AD B2C můžete nakonfigurovat tak, aby se uživatelé mohli k aplikaci přihlásit pomocí přihlašovacích údajů z externích zprostředkovatelů identity SAML nebo enterprise SAML. Když Azure AD B2C federuje s zprostředkovatelem identity SAML, funguje jako poskytovatel služeb, který iniciuje požadavek SAML na zprostředkovatele identity SAML a čeká na odpověď SAML. V následujícím diagramu:

  1. Aplikace zahájí žádost o autorizaci pro Azure AD B2C. Aplikace může být OAuth 2.0 nebo OpenId Připojení aplikace nebo poskytovatele služby SAML.
  2. Na přihlašovací stránce Azure AD B2C se uživatel rozhodne přihlásit pomocí účtu zprostředkovatele identity SAML (například Contoso). Azure AD B2C zahájí žádost o autorizaci SAML a přenese uživatele na zprostředkovatele identity SAML, aby se přihlášení dokončilo.
  3. Zprostředkovatel identity SAML vrátí odpověď SAML.
  4. Azure AD B2C ověří token SAML, extrahuje deklarace identity, vydá vlastní token a přenese uživatele zpět do aplikace.

Sign in with SAML identity provider flow

Předpoklady

Součásti řešení

Pro tento scénář jsou vyžadovány následující komponenty:

  • Zprostředkovatel identity SAML s možností přijímat, dekódovat a reagovat na požadavky SAML z Azure AD B2C.
  • Veřejně dostupný koncový bod metadat SAML pro vašeho zprostředkovatele identity.
  • Tenant Azure AD B2C.

Důležité

Vaše koncové body musí splňovat požadavky na zabezpečení Azure AD B2C. Starší verze protokolu TLS a šifry jsou zastaralé. Další informace najdete v tématu Požadavky na protokol TLS a šifrovací sadu Azure AD B2C.

Vytvoření klíče zásad

Pokud chcete vytvořit vztah důvěryhodnosti mezi Azure AD B2C a vaším zprostředkovatelem identity SAML, musíte zadat platný certifikát X509 s privátním klíčem. Azure AD B2C podepíše požadavky SAML pomocí privátního klíče certifikátu. Zprostředkovatel identity ověří požadavek pomocí veřejného klíče certifikátu. Veřejný klíč je přístupný prostřednictvím metadat technického profilu. Případně můžete soubor .cer ručně nahrát do zprostředkovatele identity SAML.

Certifikát podepsaný svým držitelem je pro většinu scénářů přijatelný. V produkčních prostředích se doporučuje použít certifikát X509 vydaný certifikační autoritou. Jak je popsáno dále v tomto dokumentu, pro neprodukční prostředí můžete podepisování SAML zakázat na obou stranách.

Získání certifikátu

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.

Nahrání certifikátu

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.

Konfigurace technického profilu SAML

Definujte zprostředkovatele identity SAML tak, že ho přidáte do elementu ClaimsProviders v souboru s příponou vaší zásady. Zprostředkovatelé deklarací identity obsahují technický profil SAML, který určuje koncové body a protokoly potřebné ke komunikaci se zprostředkovatelem identity SAML. Přidání zprostředkovatele deklarací identity s technickým profilem 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 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>
    

Aktualizujte následující elementy XML odpovídající hodnotou:

Prvek XML Hodnota
ClaimsProvider\Domain Název domény, který se používá pro přímé přihlašování. Zadejte název domény, který chcete použít v přímém přihlašování. Například Contoso.com.
TechnicalProfile\DisplayName Tato hodnota se zobrazí na přihlašovací obrazovce na tlačítku pro přihlášení. Například Contoso.
Metadata\PartnerEntity Adresa URL metadat zprostředkovatele identity SAML Nebo můžete zkopírovat metadata zprostředkovatele identity a přidat je do elementu <![CDATA[Your IDP metadata]]>CDATA .

Mapování deklarací identity

OutputClaims element obsahuje seznam deklarací identity vrácených zprostředkovatelem identity SAML. Namapujte název deklarace identity definované v zásadě na název kontrolního výrazu definovaný ve zprostředkovateli identity. Projděte si seznam deklarací identity (kontrolní výrazy) zprostředkovatele identity. Další informace najdete v tématu mapování deklarací identity.

V předchozím příkladu contoso-SAML2 obsahuje deklarace identity vrácené zprostředkovatelem identity SAML:

  • Deklarace identity assertionSubjectName je namapována na deklaraci identity issuerUserId .
  • Deklarace identity first_name je namapovaná na danou deklaraci identityName .
  • Deklarace last_name se mapuje na deklaraci příjmení .
  • Deklarace http://schemas.microsoft.com/identity/claims/displayname identity se mapuje na deklaraci identity displayName .
  • Deklarace identity e-mailu bez mapování jmen

Technický profil také vrací deklarace identity, které nevrací zprostředkovatel identity:

  • Deklarace identityProvider , která obsahuje název zprostředkovatele identity.
  • Deklarace identity authenticationSource s výchozí hodnotou socialIdpAuthentication.

Přidání technického profilu relace SAML

Pokud ještě SM-Saml-idp nemáte technický profil relace SAML, přidejte ho do zásad rozšíření. <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>

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 zprostředkovatele identity SAML

Po nakonfigurování zásad musíte nakonfigurovat zprostředkovatele identity SAML s metadaty SAML Azure AD B2C SAML. Metadata SAML jsou informace používané v protokolu SAML k zveřejnění konfigurace zásad, zprostředkovatele služeb. Definuje umístění služeb, jako je přihlášení a odhlášení, certifikáty, metoda přihlašování a další.

Každý zprostředkovatel identity SAML má různé kroky pro nastavení poskytovatele služeb. Někteří zprostředkovatelé identity SAML požadují metadata Azure AD B2C, zatímco jiní vyžadují ruční procházení souboru metadat a poskytnutí informací. Pokyny najdete v dokumentaci zprostředkovatele identity.

Následující příklad ukazuje adresu URL pro metadata 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.

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 , abyste se přihlásili pomocí účtu Contoso.

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.

Další kroky