Udostępnij za pośrednictwem


Konfigurowanie rejestracji i logowania przy użyciu dostawcy tożsamości SAML przy użyciu usługi Azure Active Directory B2C

Usługa Azure Active Directory B2C (Azure AD B2C) obsługuje federację z dostawcami tożsamości SAML 2.0. W tym artykule pokazano, jak włączyć logowanie przy użyciu konta użytkownika dostawcy tożsamości SAML, umożliwiając użytkownikom logowanie się przy użyciu istniejących tożsamości społecznościowych lub przedsiębiorstwa, takich jak usługi ADFS i Salesforce.

Przed rozpoczęciem użyj selektora Wybierz typ zasad, aby wybrać typ konfigurowanych zasad. Usługa Azure Active Directory B2C oferuje dwie metody definiowania sposobu interakcji użytkowników z aplikacjami: za pomocą wstępnie zdefiniowanych przepływów użytkowników lub w pełni konfigurowalnych zasad niestandardowych. Kroki wymagane w tym artykule są różne dla każdej metody.

Ta funkcja jest dostępna tylko dla zasad niestandardowych. Aby uzyskać instrukcje konfiguracji, wybierz pozycję Zasady niestandardowe w poprzednim selektorze.

Omówienie scenariusza

Usługę Azure AD B2C można skonfigurować tak, aby umożliwić użytkownikom logowanie się do aplikacji przy użyciu poświadczeń zewnętrznych dostawców tożsamości SAML (IDL) zewnętrznych dostawców tożsamości społecznościowych lub przedsiębiorstwa. Gdy usługa Azure AD B2C sfederuje się z dostawcą tożsamości SAML, działa jako dostawca usług inicjujący żądanie SAML do dostawcy tożsamości SAML i czekając na odpowiedź SAML. Na poniższym diagramie:

  1. Aplikacja inicjuje żądanie autoryzacji do usługi Azure AD B2C. Aplikacja może być aplikacją OAuth 2.0 lub OpenId Połączenie albo dostawcą usług SAML.
  2. Na stronie logowania usługi Azure AD B2C użytkownik decyduje się zalogować przy użyciu konta dostawcy tożsamości SAML (na przykład Contoso). Usługa Azure AD B2C inicjuje żądanie autoryzacji SAML i przenosi użytkownika do dostawcy tożsamości SAML w celu ukończenia logowania.
  3. Dostawca tożsamości SAML zwraca odpowiedź SAML.
  4. Usługa Azure AD B2C weryfikuje token SAML, wyodrębnia oświadczenia, wystawia własny token i przenosi użytkownika z powrotem do aplikacji.

Sign in with SAML identity provider flow

Wymagania wstępne

Składniki rozwiązania

W tym scenariuszu wymagane są następujące składniki:

  • Dostawca tożsamości SAML z możliwością odbierania, dekodowania i odpowiadania na żądania SAML z usługi Azure AD B2C.
  • Publicznie dostępny punkt końcowy metadanych SAML dla dostawcy tożsamości.
  • Dzierżawa usługi Azure AD B2C.

Ważne

Punkty końcowe muszą być zgodne z wymaganiami dotyczącymi zabezpieczeń usługi Azure AD B2C. Starsze wersje protokołu TLS i szyfry są przestarzałe. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące protokołu TLS i pakietu szyfrowania usługi Azure AD B2C.

Tworzenie klucza zasad

Aby ustanowić zaufanie między usługą Azure AD B2C i dostawcą tożsamości SAML, musisz podać prawidłowy certyfikat X509 z kluczem prywatnym. Usługa Azure AD B2C podpisuje żądania SAML przy użyciu klucza prywatnego certyfikatu. Dostawca tożsamości weryfikuje żądanie przy użyciu klucza publicznego certyfikatu. Klucz publiczny jest dostępny za pośrednictwem metadanych profilu technicznego. Alternatywnie możesz ręcznie przekazać plik cer do dostawcy tożsamości SAML.

Certyfikat z podpisem własnym jest akceptowalny w większości scenariuszy. W środowiskach produkcyjnych zaleca się użycie certyfikatu X509 wystawionego przez urząd certyfikacji. Ponadto, zgodnie z opisem w dalszej części tego dokumentu, w środowisku nieprodukcyjnym można wyłączyć podpisywanie SAML po obu stronach.

Uzyskiwanie certyfikatu

Jeśli nie masz jeszcze certyfikatu, możesz użyć certyfikatu z podpisem własnym. Certyfikat z podpisem własnym jest certyfikatem zabezpieczeń, który nie jest podpisany przez urząd certyfikacji i nie zapewnia gwarancji bezpieczeństwa certyfikatu podpisanego przez urząd certyfikacji.

W systemie Windows użyj polecenia cmdlet New-SelfSignedCertificate w programie PowerShell, aby wygenerować certyfikat.

  1. Uruchom następujące polecenie programu PowerShell, aby wygenerować certyfikat z podpisem własnym. Zmodyfikuj -Subject argument odpowiednio dla aplikacji i nazwy dzierżawy usługi Azure AD B2C, na przykład contosowebapp.contoso.onmicrosoft.com. Możesz również dostosować -NotAfter datę, aby określić inne wygaśnięcie certyfikatu.

    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 komputerze z systemem Windows wyszukaj i wybierz pozycję Zarządzaj certyfikatami użytkowników

  3. W obszarze Certyfikaty — bieżący użytkownik wybierz pozycję Certyfikaty>osobiste>yourappname.yourtenant.onmicrosoft.com.

  4. Wybierz certyfikat, a następnie wybierz pozycję Akcja>Wszystkie zadania>eksportu.

  5. Wybierz pozycję Dalej>Tak, wyeksportuj klucz>prywatny Dalej.

  6. Zaakceptuj wartości domyślne formatu pliku eksportu, a następnie wybierz przycisk Dalej.

  7. Włącz opcję Hasło , wprowadź hasło dla certyfikatu, a następnie wybierz pozycję Dalej.

  8. Aby określić lokalizację do zapisania certyfikatu, wybierz pozycję Przeglądaj i przejdź do wybranego katalogu.

  9. W oknie Zapisz jako wprowadź nazwę pliku, a następnie wybierz pozycję Zapisz.

  10. Wybierz pozycje Next>Finish (Dalej, Zakończ).

Aby usługa Azure AD B2C akceptowała hasło pliku pfx, należy zaszyfrować hasło przy użyciu opcji TripleDES-SHA1 w narzędziu eksportu magazynu certyfikatów systemu Windows, w przeciwieństwie do AES256-SHA256.

Przekazywanie certyfikatu

Certyfikat należy przechowywać w dzierżawie usługi Azure AD B2C.

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
  6. W obszarze Opcje wybierz pozycję Upload.
  7. Wprowadź nazwę klucza zasad. Na przykład SAMLSigningCert. Prefiks B2C_1A_ jest dodawany automatycznie do nazwy klucza.
  8. Przejdź do pliku pfx certyfikatu i wybierz go z kluczem prywatnym.
  9. Kliknij pozycję Utwórz.

Konfigurowanie profilu technicznego SAML

Zdefiniuj dostawcę tożsamości SAML, dodając go do elementu ClaimsProviders w pliku rozszerzenia zasad. Dostawcy oświadczeń zawierają profil techniczny SAML, który określa punkty końcowe i protokoły wymagane do komunikowania się z dostawcą tożsamości SAML. Aby dodać dostawcę oświadczeń z profilem technicznym SAML:

  1. Otwórz plik TrustFrameworkExtensions.xml.

  2. Znajdź element ClaimsProviders. Jeśli nie istnieje, dodaj go pod elementem głównym.

  3. Dodaj nowy element ClaimsProvider w następujący sposób:

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

Zaktualizuj następujące elementy XML przy użyciu odpowiedniej wartości:

Element XML Wartość
ClaimsProvider\Domain Nazwa domeny używana do logowania bezpośredniego. Wprowadź nazwę domeny, której chcesz użyć podczas logowania bezpośredniego. Na przykład Contoso.com.
TechnicalProfile\DisplayName Ta wartość zostanie wyświetlona na przycisku logowania na ekranie logowania. Na przykład Contoso.
Metadata\PartnerEntity Adres URL metadanych dostawcy tożsamości SAML. Możesz też skopiować metadane dostawcy tożsamości i dodać je do elementu <![CDATA[Your IDP metadata]]>CDATA .

Mapuj oświadczenia

Element OutputClaims zawiera listę oświadczeń zwróconych przez dostawcę tożsamości SAML. Zamapuj nazwę oświadczenia zdefiniowanego w zasadach na nazwę asercji zdefiniowaną w dostawcy tożsamości. Sprawdź dostawcę tożsamości, aby uzyskać listę oświadczeń (asercji). Aby uzyskać więcej informacji, zobacz mapowanie oświadczeń.

W powyższym przykładzie firma Contoso-SAML2 zawiera oświadczenia zwrócone przez dostawcę tożsamości SAML:

  • Oświadczenie assertionSubjectName jest mapowane na oświadczenie issuerUserId .
  • Oświadczenie first_name jest mapowane na oświadczenie givenName .
  • Roszczenie last_name jest mapowane na roszczenie o nazwisko .
  • Oświadczenie http://schemas.microsoft.com/identity/claims/displayname jest mapowane na oświadczenie displayName .
  • Oświadczenie e-mail bez mapowania nazwy.

Profil techniczny zwraca również oświadczenia, które nie są zwracane przez dostawcę tożsamości:

  • Oświadczenie identityProvider , które zawiera nazwę dostawcy tożsamości.
  • Oświadczenie authenticationSource z wartością domyślną socialIdpAuthentication.

Dodawanie profilu technicznego sesji SAML

Jeśli nie masz jeszcze profilu technicznego SM-Saml-idp sesji SAML, dodaj go do zasad rozszerzenia. Znajdź sekcję <ClaimsProviders> i dodaj następujący fragment kodu XML. Jeśli twoje zasady zawierają SM-Saml-idp już profil techniczny, przejdź do następnego kroku. Aby uzyskać więcej informacji, zobacz Zarządzanie sesjami logowania jednokrotnego.

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

Dodawanie podróży użytkownika

W tym momencie dostawca tożsamości został skonfigurowany, ale nie jest jeszcze dostępny na żadnej ze stron logowania. Jeśli nie masz własnej podróży użytkownika niestandardowego, utwórz duplikat istniejącej podróży użytkownika szablonu, w przeciwnym razie przejdź do następnego kroku.

  1. Otwórz plik TrustFrameworkBase.xml z pakietu startowego.
  2. Znajdź i skopiuj całą zawartość elementu UserJourney , który zawiera Id="SignUpOrSignIn"element .
  3. Otwórz plik TrustFrameworkExtensions.xml i znajdź element UserJourneys . Jeśli element nie istnieje, dodaj go.
  4. Wklej całą zawartość elementu UserJourney skopiowaną jako element podrzędny elementu UserJourneys .
  5. Zmień nazwę identyfikatora podróży użytkownika. Na przykład Id="CustomSignUpSignIn".

Dodawanie dostawcy tożsamości do podróży użytkownika

Teraz, gdy masz podróż użytkownika, dodaj nowego dostawcę tożsamości do podróży użytkownika. Najpierw dodaj przycisk logowania, a następnie połącz przycisk z akcją. Akcja to utworzony wcześniej profil techniczny.

  1. Znajdź element kroku aranżacji, który zawiera Type="CombinedSignInAndSignUp"element , lub Type="ClaimsProviderSelection" w podróży użytkownika. Zazwyczaj jest to pierwszy krok aranżacji. Element ClaimsProviderSelections zawiera listę dostawców tożsamości, za pomocą których użytkownik może się zalogować. Kolejność elementów kontroluje kolejność przycisków logowania przedstawionych użytkownikowi. Dodaj element ClaimsProviderSelection XML. Ustaw wartość TargetClaimsExchangeId na przyjazną nazwę.

  2. W następnym kroku aranżacji dodaj element ClaimsExchange . Ustaw identyfikator na wartość identyfikatora wymiany oświadczeń docelowych. Zaktualizuj wartość TechnicalProfileReferenceId na identyfikator utworzonego wcześniej profilu technicznego.

Poniższy kod XML przedstawia dwa pierwsze kroki orkiestracji podróży użytkownika z dostawcą tożsamości:

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

Konfigurowanie zasad jednostki uzależnionej

Zasady jednostki uzależnionej, na przykład SignUpSignIn.xml, określają podróż użytkownika, który będzie wykonywany przez usługę Azure AD B2C. Znajdź element DefaultUserJourney w ramach jednostki uzależnionej. Zaktualizuj identyfikator ReferenceId , aby był zgodny z identyfikatorem podróży użytkownika, w którym dodano dostawcę tożsamości.

W poniższym przykładzie CustomSignUpSignIn dla podróży użytkownika identyfikator ReferenceId jest ustawiony na :CustomSignUpSignIn

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

Przekazywanie zasad niestandardowych

  1. Zaloguj się w witrynie Azure Portal.
  2. Wybierz ikonę Katalog i subskrypcja na pasku narzędzi portalu, a następnie wybierz katalog zawierający dzierżawę usługi Azure AD B2C.
  3. W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  4. W obszarze Zasady wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Przekaż zasady niestandardowe, a następnie przekaż dwa zmienione pliki zasad w następującej kolejności: zasady rozszerzenia, na przykład TrustFrameworkExtensions.xml, a następnie zasady jednostki uzależnionej, takie jak SignUpSignIn.xml.

Konfigurowanie dostawcy tożsamości SAML

Po skonfigurowaniu zasad należy skonfigurować dostawcę tożsamości SAML przy użyciu metadanych SAML usługi Azure AD B2C SAML. Metadane SAML są informacjami używanymi w protokole SAML w celu uwidocznienia konfiguracji zasad dostawcy usług. Definiuje lokalizację usług, takich jak logowanie i wylogowywanie, certyfikaty, metoda logowania i inne.

Każdy dostawca tożsamości SAML ma różne kroki ustawiania dostawcy usług. Niektórzy dostawcy tożsamości SAML proszą o metadane usługi Azure AD B2C, podczas gdy inni wymagają ręcznego przejrzenia pliku metadanych i podania informacji. Aby uzyskać wskazówki, zapoznaj się z dokumentacją dostawcy tożsamości.

W poniższym przykładzie przedstawiono adres URL metadanych SAML profilu technicznego usługi Azure AD B2C:

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

W przypadku korzystania z domeny niestandardowej użyj następującego formatu:

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

Zastąp następujące wartości:

  • nazwa-dzierżawy z nazwą dzierżawy, taką jak your-tenant.onmicrosoft.com.
  • nazwa-domeny z niestandardową nazwą domeny, taką jak login.contoso.com.
  • Twoje zasady o nazwie zasad. Na przykład B2C_1A_signup_signin_adfs.
  • Twój profil techniczny o nazwie profilu technicznego dostawcy tożsamości SAML. Na przykład Contoso-SAML2.

Otwórz przeglądarkę i przejdź do adresu URL. Upewnij się, że wpiszesz prawidłowy adres URL i masz dostęp do pliku metadanych XML.

Testowanie zasad niestandardowych

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  4. W obszarze Zasady wybierz pozycję Identity Experience Framework
  5. Wybierz zasady jednostki uzależnionej, na przykład B2C_1A_signup_signin.
  6. W polu Aplikacja wybierz wcześniej zarejestrowaną aplikację internetową. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  7. Wybierz przycisk Uruchom teraz.
  8. Na stronie rejestracji lub logowania wybierz pozycję Contoso , aby zalogować się przy użyciu konta firmy Contoso.

Jeśli proces logowania zakończy się pomyślnie, przeglądarka zostanie przekierowana do https://jwt.msusługi , która wyświetla zawartość tokenu zwróconego przez usługę Azure AD B2C.

Następne kroki