Udostępnij przez


Konfiguracja rejestracji i logowania z dostawcą tożsamości SAML za pomocą Azure Active Directory B2C

Ważne

Od 1 maja 2025 r. usługa Azure AD B2C nie będzie już dostępna do zakupu dla nowych klientów. Dowiedz się więcej w naszych często zadawanych pytaniach.

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 za pomocą konta użytkownika dostawcy tożsamości SAML, umożliwiając użytkownikom logowanie się za pomocą ich istniejących tożsamości społecznych lub firmowych, takich jak usługi ADFS i Salesforce.

Przed rozpoczęciem użyj selektora Wybierz typ zasad w górnej części tej strony, 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ń od zewnętrznych dostawców tożsamości, zarówno społecznościowych, jak i korporacyjnych, obsługujących SAML (IdP). 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 Connect 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ź typu 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.

Logowanie z wykorzystaniem przepływu dostawcy tożsamości SAML

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

Uzyskaj certyfikat

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>yourappname.yourtenant.onmicrosoft.com.

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

  5. Wybierz pozycję >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 pozycję Next>Finish (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.

Prześlij certyfikat

Należy przechowywać certyfikat w swoim dzierżawcy usługi Azure AD B2C.

  1. Zaloguj się do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz pozycję Azure AD B2C.
  4. Na stronie Przegląd ogólny wybierz pozycję Identity Experience Framework.
  5. Wybierz Klucze zasad, a następnie wybierz 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 z kluczem prywatnym i wybierz go.
  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 roszczeń 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 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ść
DostawcaRoszczeń\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.
ProfilTechniczny\NazwaWyświetlana Ta wartość zostanie wyświetlona na przycisku logowania na ekranie logowania. Na przykład Contoso.
Metadata\PartnerEntity Adres URL metadanych dostawcy usług identyfikacji 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. Przypisz nazwę roszczenia zdefiniowaną w polityce do nazwy asercji zdefiniowanej 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 Contoso-SAML2 obejmuje 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 nazwisko.
  • Atrybut http://schemas.microsoft.com/identity/claims/displayname jest mapowany na atrybut displayName.
  • Żądanie e-mail bez mapowania nazw.

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 domyślną wartością socialIdpAuthentication.

Dodawanie profilu technicznego sesji SAML

Jeśli nie masz jeszcze technicznego profilu sesji SAML SM-Saml-idp, dodaj go do swojej polityki rozszerzenia. Znajdź sekcję <ClaimsProviders> i dodaj następujący fragment kodu XML. Jeśli twoje zasady już zawierają profil techniczny SM-Saml-idp, 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>

Dodanie ścieżki 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 niestandardowej podróży użytkownika, utwórz duplikat szablonu podróży użytkownika, inaczej 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 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ń identyfikator podróży użytkownika. Na przykład Id="CustomSignUpSignIn".

Dodaj dostawcę tożsamości do podróży użytkownika

Teraz, gdy masz ścieżkę użytkownika, dodaj nowego dostawcę tożsamości do tej ścieżki. 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" lub Type="ClaimsProviderSelection" w ścieżce 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 XML ClaimsProviderSelection. Ustaw wartość TargetClaimsExchangeId na przyjazną nazwę.

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

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 polityki podmiotu polegającego

Polityka zaufanej strony, na przykład SignUpSignIn.xml, określa podróż użytkownika, którą zrealizuje Azure AD B2C. Znajdź element DefaultUserJourney w stronie zaufanej. 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 dla ścieżki użytkownika CustomSignUpSignIn identyfikator ReferenceId jest ustawiony na:CustomSignUpSignIn

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

Przekaż zasady niestandardowe

  1. Zaloguj się do witryny 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 Policieswybierz pozycję Identity Experience Framework.
  5. Wybierz Załaduj zasady niestandardowe, a następnie załaduj dwa zmienione pliki zasad w następującej kolejności: zasady rozszerzenia, na przykład TrustFrameworkExtensions.xml, a następnie zasady strony zależnej, takie jak SignUpSignIn.xml.

Skonfiguruj dostawcę tożsamości SAML

Po skonfigurowaniu zasad należy skonfigurować dostawcę tożsamości SAML przy użyciu metadanych usługi Azure AD B2C SAML. Metadane SAML to informacje wykorzystywane w protokole SAML do ujawnienia konfiguracji Twojej polityki, 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:

  • Zamień nazwa-dzierżawy na nazwę swojej dzierżawy, na przykład your-tenant.onmicrosoft.com.
  • Nazwa domeny nazwa-domeny powinna być zastąpiona przez niestandardową nazwę domeny, na przykład login.contoso.com.
  • Twoja-polisa z nazwą polisy. Na przykład B2C_1A_signup_signin_adfs.
  • Twój profil techniczny z nazwą 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.

Przetestuj swoje zasady niestandardowe

  1. Zaloguj się do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + 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 zaufanej strony, 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.ms, gdzie wyświetlana jest zawartość tokenu zwróconego przez Azure AD B2C.

Dalsze kroki