Einrichten der Anmeldung mit einem Salesforce-SAML-Anbieter mithilfe des SAML-Protokolls in Azure Active Directory B2C

Bevor Sie beginnen, verwenden Sie den Auswahlpunkt Richtlinientyp wählen, um die Art der Richtlinie auszuwählen, die Sie einrichten möchten. Azure Active Directory B2C bietet zwei Methoden zum Definieren der Benutzerinteraktion mit Ihren Anwendungen: vordefinierte Benutzerflows oder vollständig konfigurierbare benutzerdefinierte Richtlinien. Die Schritte, die in diesem Artikel erforderlich sind, unterscheiden sich für jede Methode.

Dieses Feature ist nur für benutzerdefinierte Richtlinien verfügbar. Wählen Sie für die Einrichtungsschritte in der vorherigen Auswahl die Option Benutzerdefinierte Richtlinie aus.

Hinweis

In Azure Active Directory B2C sind benutzerdefinierte Richtlinien in erster Linie für komplexe Szenarien konzipiert. Für die meisten Szenarien empfehlen wir die Verwendung von integrierten Benutzerflows. Informieren Sie sich, sofern noch nicht geschehen, unter Tutorial: Erstellen von Benutzerflows und benutzerdefinierten Richtlinien in Azure Active Directory B2C über das Starter Pack für benutzerdefinierte Richtlinien.

In diesem Artikel wird beschrieben, wie Sie die Anmeldung für Benutzer einer Salesforce-Organisation mithilfe benutzerdefinierter Richtlinien in Azure Active Directory B2C (Azure AD B2C) aktivieren. Sie ermöglichen die Anmeldung, indem Sie einer benutzerdefinierten Richtlinie einen SAML-Idenditätsanbieter hinzufügen.

Voraussetzungen

Einrichten von Salesforce als Identitätsanbieter

  1. Anmelden Sie sich bei Salesforce an.
  2. Erweitern Sie im Menü auf der linken Seite unter Einstellungen die Option Identität, und wählen Sie dann Identitätsanbieter aus.
  3. Wählen Sie Enable Identity Provider (Identitätsanbieter aktivieren) aus.
  4. Wählen Sie unter Select the certificate (Zertifikat auswählen) das Zertifikat aus, das Salesforce für die Kommunikation mit Azure AD B2C verwendet soll. Sie können das Standardzertifikat verwenden.
  5. Klicken Sie auf Speichern.

Erstellen einer verbundenen App in Salesforce

  1. Wählen Sie auf der Seite Identitätsanbieter folgende Option aus: Service Providers are now created via Connected Apps. Click here. (Dienstanbieter werden jetzt mit verbundenen Apps erstellt. Hier klicken.).

  2. Geben Sie unter BAsi Informationen die erforderlichen Werte für die verbundene App ein.

  3. Aktivieren Sie unter Web-App-Einstellungen das Kontrollkästchen SAML aktivieren.

  4. Geben Sie im Feld Entitäts-ID die folgende URL ein. Ersetzen Sie den Wert von your-tenant durch den Namen Ihres Azure AD B2C-Mandanten.

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

    Verwenden Sie bei einer benutzerdefinierten Domäne das folgende Format:

    https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    
  5. Geben Sie im Feld ACS-URL die folgende URL ein. Ersetzen Sie den Wert von your-tenant durch den Namen Ihres Azure AD B2C-Mandanten.

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

    Verwenden Sie bei einer benutzerdefinierten Domäne das folgende Format:

    https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
    
  6. Scrollen Sie zum Ende der Liste, und klicken Sie dann auf Speichern.

Abrufen der Metadaten-URL

  1. Klicken Sie auf der Übersichtsseite der verbundenen App auf Verwalten.
  2. Kopieren Sie den Wert für Metadata Discovery Endpoint (Metadaten-Ermittlungsendpunkt), und speichern Sie ihn. Sie werden ihn später in diesem Artikel brauchen.

Einrichten von Salesforce-Benutzern für einen Verbund

  1. Klicken Sie auf der Seite Verwalten der verbundenen App auf Profile verwalten.
  2. Wählen Sie die Profile (oder Benutzergruppen) aus, für die ein Verbund mit Azure AD B2C hergestellt werden soll. Wählen Sie als Systemadministrator das Kontrollkästchen Systemadministrator aus, damit Sie den Verbund mit Ihrem Salesforce-Konto herstellen können.

Erstellen eines selbstsignierten Zertifikats

Wenn Sie noch nicht über ein Zertifikat verfügen, können Sie ein selbstsigniertes Zertifikat verwenden. Ein selbstsigniertes Zertifikat ist ein Sicherheitszertifikat, das nicht von einer Zertifizierungsstelle (ZS) signiert ist und nicht die Sicherheitsgarantien eines Zertifikats bietet, das von einer Zertifizierungsstelle signiert wurde.

Verwenden Sie unter Windows das PowerShell-Cmdlet New-SelfSignedCertificate, um ein Zertifikat zu generieren.

  1. Führen Sie den folgenden PowerShell-Befehl aus, um ein selbstsigniertes Zertifikat zu generieren. Ändern Sie das Argument -Subject entsprechend Ihrer Anwendung und dem Azure AD B2C-Mandantennamen, z. B. contosowebapp.contoso.onmicrosoft.com. Sie können auch das -NotAfter-Datum anpassen, um einen anderen Ablaufzeitpunkt für das Zertifikat anzugeben.

    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. Suchen Sie auf dem Windows-Computer nach Benutzerzertifikate verwalten und wählen Sie

  3. Wählen Sie unter Zertifikate - Aktueller Benutzer die Option Persönlich>Zertifikate>IhrAnwendungsname.ihrmieter.onmicrosoft.com.

  4. Wählen Sie das Zertifikat und dann Aktion>Alle Aufgaben>Exportieren aus.

  5. Wählen Sie Weiter>Ja, den privaten Schlüssel exportieren>Weiter.

  6. Übernehmen Sie die Standardeinstellungen für Exportdateiformat, und wählen Sie dann Weiter.

  7. Aktivieren Sie die Option Passwort, geben Sie ein Passwort für das Zertifikat ein, und wählen Sie dann Weiter.

  8. Um einen Speicherort für Ihr Zertifikat anzugeben, wählen Sie Durchsuchen und navigieren Sie zu einem Verzeichnis Ihrer Wahl.

  9. Geben Sie im Fenster Speichern unter einen Dateinamen ein, und wählen Sie dann Speichern.

  10. Wählen Sie Weiter>Fertig stellen aus.

Damit das Kennwort für die PFX-Datei in Azure AD B2C akzeptiert wird, muss es statt mit „AES256-SHA256“ mit der Option „TripleDES-SHA1“ im Exporthilfsprogramm des Windows-Zertifikatspeichers verschlüsselt werden.

Erstellen eines Richtlinienschlüssels

Sie müssen das erstellte Zertifikat in Ihrem Azure AD B2C-Mandanten speichern.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Klicken Sie erst auf Richtlinienschlüssel und anschließend auf Hinzufügen.
  6. Klicken Sie unter Optionen auf Upload.
  7. Geben Sie einen Namen für die Richtlinie ein. Beispiel: SAMLSigningCert. Dem Namen Ihres Schlüssels wird automatisch das Präfix B2C_1A_ hinzugefügt.
  8. Navigieren Sie zum Zertifikat „B2CSigningCert.pfx“, das Sie erstellt haben, und wählen Sie es aus.
  9. Geben Sie das Kennwort für das Zertifikat ein.
  10. Klicken Sie auf Erstellen.

Hinzufügen eines Anspruchsanbieters

Wenn Sie möchten, dass sich Benutzer mit einem Salesforce-Konto anmelden, müssen Sie das Konto als Anspruchsanbieter definieren, mit dem Azure AD B2C über einen Endpunkt kommunizieren kann. Der Endpunkt bietet eine Reihe von Ansprüchen, mit denen Azure AD B2C überprüft, ob ein bestimmter Benutzer authentifiziert wurde.

Sie können ein Salesforce-Konto als Anspruchsanbieter definieren, indem Sie es in der Erweiterungsdatei Ihrer Richtlinie dem ClaimsProviders-Element hinzufügen. Weitere Informationen finden Sie unter Definieren eines SAML-Identitätsanbieters.

  1. Öffnen Sie die Datei TrustFrameworkExtensions.xml.

  2. Suchen Sie nach dem Element ClaimsProviders. Falls das Element nicht vorhanden sein sollte, fügen Sie es unter dem Stammelement hinzu.

  3. Fügen Sie ein neues ClaimsProvider-Element wie folgt hinzu:

    <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. Ändern Sie den Wert von PartnerEntity in die Salesforce-Metadaten-URL, die Sie zuvor kopiert haben.

  5. Ändern Sie den Wert beider Instanzen von StorageReferenceId in den Namen des Schlüssels Ihres Signaturzertifikats. Beispiel: B2C_1A_SAMLSigningCert.

  6. Suchen Sie den Abschnitt <ClaimsProviders>, und fügen Sie den folgenden XML-Codeausschnitt hinzu. Wenn Ihre Richtlinie das technische SM-Saml-idp-Profil bereits enthält, fahren Sie mit dem nächsten Schritt fort. Weitere Informationen finden Sie unter Sitzungsverwaltung für einmaliges Anmelden.

    <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. Speichern Sie die Datei .

Hinzufügen einer User Journey

Der Identitätsanbieter wurde nun eingerichtet, aber er ist noch auf keiner der Anmeldeseiten verfügbar. Wenn Sie nicht über eine eigene benutzerdefinierte User Journey verfügen, erstellen Sie ein Duplikat einer vorhandenen User Journey-Vorlage, und fahren Sie andernfalls mit dem nächsten Schritt fort.

  1. Öffnen Sie die Datei TrustFrameworkBase.xml aus dem Starter Pack.
  2. Suchen und kopieren Sie den gesamten Inhalt des UserJourney-Elements, das Id="SignUpOrSignIn" enthält.
  3. Öffnen Sie die Datei TrustFrameworkExtensions.xml, und suchen Sie nach dem UserJourneys-Element. Wenn das Element nicht vorhanden ist, fügen Sie ein solches hinzu.
  4. Fügen Sie den gesamten Inhalt des kopierten UserJourney-Element als untergeordnetes Element des UserJourneys-Elements ein.
  5. Benennen Sie die ID der User Journey um. Beispiel: Id="CustomSignUpSignIn".

Hinzufügen des Identitätsanbieters zu einer User Journey

Nachdem Sie nun über eine User Journey verfügen, fügen Sie den neuen Identitätsanbieter der User Journey hinzu. Fügen Sie zunächst eine Anmeldeschaltfläche hinzu, und verknüpfen Sie dann die Schaltfläche mit einer Aktion. Die Aktion ist das technische Profil, das Sie zuvor erstellt haben.

  1. Suchen Sie nach dem Orchestrierungsschrittelement, das Type="CombinedSignInAndSignUp" enthält, oder Type="ClaimsProviderSelection" in der User Journey. Dies ist in der Regel der erste Orchestrierungsschritt. Das ClaimsProviderSelections-Element enthält eine Liste mit Identitätsanbietern, mit denen sich ein Benutzer anmelden kann. Die Reihenfolge der Elemente gibt die Reihenfolge der Anmeldeschaltflächen vor, die dem Benutzer angezeigt werden. Fügen Sie ein ClaimsProviderSelection-XML-Element hinzu. Legen Sie für TargetClaimsExchangeId einen Anzeigenamen fest.

  2. Fügen Sie im nächsten Orchestrierungsschritt ein ClaimsExchange-Element hinzu. Legen Sie die ID auf den Wert der Zielanspruchs-Austausch-ID fest. Ändern Sie den Wert von TechnicalProfileReferenceId in die ID des technischen Profils, das Sie zuvor erstellt haben.

Der folgende XML-Code veranschaulicht die ersten beiden Orchestrierungsschritte einer User Journey mit dem Identitätsanbieter:

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

Konfigurieren einer Richtlinie für die vertrauende Seite

Die Richtlinie für die vertrauende Seite (z. B. SignUpSignIn.xml) gibt die User Journey an, die Azure AD B2C ausführt. Suchen Sie das DefaultUserJourney-Element in Vertrauende Seite. Aktualisieren Sie ReferenceId auf die ID der User Journey, in der Sie den Identitätsanbieter hinzugefügt haben.

Im folgenden Beispiel wird die ReferenceId für die User Journey CustomSignUpSignIn auf CustomSignUpSignIn festgelegt:

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

Hochladen der benutzerdefinierten Richtlinie

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie auf der Symbolleiste des Portals das Symbol Verzeichnis und Abonnement aus, und wählen Sie dann das Verzeichnis aus, das Ihren Azure AD B2C-Mandanten enthält.
  3. Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
  4. Wählen Sie unter Richtlinien die Option Identity Experience Framework aus.
  5. Wählen Sie Benutzerdefinierte Richtlinie hochladen aus, und laden Sie dann die beiden geänderten Richtliniendateien in der folgenden Reihenfolge hoch: zuerst die Erweiterungsrichtlinie (z. B. TrustFrameworkExtensions.xml) und dann die Richtlinie für die vertrauende Seite (z. B. SignUpSignIn.xml).

Testen der benutzerdefinierten Richtlinie

  1. Wählen Sie die Richtliniendatei für die vertrauende Seite aus, z. B. B2C_1A_signup_signin.
  2. Wählen Sie für Anwendung eine Webanwendung aus, die Sie zuvor registriert haben. Als Antwort-URL sollte https://jwt.ms angezeigt werden.
  3. Wählen Sie die Schaltfläche Jetzt ausführen aus.
  4. Wählen Sie auf der Registrierungs- oder Anmeldeseite die Option Salesforce aus, um sich mit dem Salesforce-Konto anzumelden.

Wenn der Anmeldevorgang erfolgreich verlaufen ist, wird der Browser an https://jwt.ms umgeleitet und dadurch der Inhalt des von Azure AD B2C zurückgegebenen Tokens angezeigt.