Konfigurowanie logowania przy użyciu dostawcy SAML usługi Salesforce przy użyciu protokołu SAML w usłudze Azure Active Directory B2C

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.

Uwaga

W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy używanie wbudowanych przepływów użytkownika. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.

W tym artykule pokazano, jak włączyć logowanie dla użytkowników z organizacji usługi Salesforce przy użyciu zasad niestandardowych w usłudze Azure Active Directory B2C (Azure AD B2C). Logowanie można włączyć, dodając dostawcę tożsamości SAML do zasad niestandardowych.

Wymagania wstępne

Konfigurowanie usługi Salesforce jako dostawcy tożsamości

  1. Zaloguj się do usługi Salesforce.
  2. W menu po lewej stronie w obszarze Ustawienia rozwiń pozycję Tożsamość, a następnie wybierz pozycję Dostawca tożsamości.
  3. Wybierz pozycję Włącz dostawcę tożsamości.
  4. W obszarze Wybierz certyfikat wybierz certyfikat, którego usługa Salesforce ma używać do komunikowania się z usługą Azure AD B2C. Możesz użyć certyfikatu domyślnego.
  5. Kliknij przycisk Zapisz.

Tworzenie połączonej aplikacji w usłudze Salesforce

  1. Na stronie Dostawca tożsamości wybierz pozycję Dostawcy usług są teraz tworzeni za pośrednictwem Połączenie ed Apps. Kliknij tutaj.

  2. W obszarze Podstawowe informacje wprowadź wymagane wartości dla połączonej aplikacji.

  3. W obszarze Aplikacja internetowa Ustawienia zaznacz pole Włącz protokół SAML.

  4. W polu Identyfikator jednostki wprowadź następujący adres URL. Upewnij się, że zastąp wartość parametru your-tenant nazwą dzierżawy usługi Azure AD B2C.

    https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    

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

    https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    
  5. W polu Adres URL usługi ACS wprowadź następujący adres URL. Upewnij się, że zastąp wartość parametru your-tenant nazwą dzierżawy usługi Azure AD B2C.

    https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
    

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

    https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
    
  6. Przewiń w dół listy, a następnie kliknij przycisk Zapisz.

Uzyskiwanie adresu URL metadanych

  1. Na stronie przeglądu połączonej aplikacji kliknij pozycję Zarządzaj.
  2. Skopiuj wartość punktu końcowego odnajdywania metadanych, a następnie zapisz ją. Użyjesz go w dalszej części tego artykułu.

Konfigurowanie użytkowników usługi Salesforce w celu federacji

  1. Na stronie Zarządzanie połączonej aplikacji kliknij pozycję Zarządzaj profilami.
  2. Wybierz profile (lub grupy użytkowników), które chcesz sfederować z usługą Azure AD B2C. Jako administrator systemu zaznacz pole wyboru System Administracja istrator, aby można było sfederować przy użyciu konta usługi Salesforce.

Tworzenie certyfikatu z podpisem własnym

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.

Tworzenie klucza zasad

Musisz przechowywać certyfikat utworzony 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ź wartość Nazwa dla zasad. Na przykład SAMLSigningCert. Prefiks B2C_1A_ jest automatycznie dodawany do nazwy klucza.
  8. Przejdź do i wybierz utworzony certyfikat B2CSigningCert.pfx.
  9. Wprowadź hasło dla certyfikatu.
  10. Kliknij pozycję Utwórz.

Dodawanie dostawcy oświadczeń

Jeśli chcesz, aby użytkownicy logowali się przy użyciu konta usługi Salesforce, musisz zdefiniować konto jako dostawcę oświadczeń, z którym usługa Azure AD B2C może komunikować się za pośrednictwem punktu końcowego. Punkt końcowy udostępnia zestaw oświadczeń używanych przez usługę Azure AD B2C do sprawdzania, czy określony użytkownik został uwierzytelniony.

Konto usługi Salesforce można zdefiniować jako dostawcę oświadczeń, dodając je do elementu ClaimsProviders w pliku rozszerzenia zasad. Aby uzyskać więcej informacji, zobacz definiowanie dostawcy tożsamości 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>salesforce.com</Domain>
      <DisplayName>Salesforce</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Salesforce-SAML2">
          <DisplayName>Salesforce</DisplayName>
          <Description>Login with your Salesforce account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="WantsEncryptedAssertions">false</Item>
            <Item Key="WantsSignedAssertions">false</Item>
            <Item Key="PartnerEntity">https://contoso-dev-ed.my.salesforce.com/.well-known/samlidp.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userId"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="username"/>
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/>
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="salesforce.com" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Zaktualizuj wartość PartnerEntity przy użyciu skopiowanego wcześniej adresu URL metadanych usługi Salesforce.

  5. Zaktualizuj wartość obu wystąpień identyfikatora StorageReferenceId na nazwę klucza certyfikatu podpisywania. Na przykład B2C_1A_SAMLSigningCert.

  6. 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>
    
  7. Zapisz plik.

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="SalesforceExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="SalesforceExchange" TechnicalProfileReferenceId="Salesforce-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.

Testowanie zasad niestandardowych

  1. Wybierz zasady jednostki uzależnionej, na przykład B2C_1A_signup_signin.
  2. W polu Aplikacja wybierz wcześniej zarejestrowaną aplikację internetową. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  3. Wybierz przycisk Uruchom teraz.
  4. Na stronie rejestracji lub logowania wybierz pozycję Salesforce , aby zalogować się przy użyciu konta usługi Salesforce.

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.