Dela via


Konfigurera inloggning med en Salesforce SAML-provider med hjälp av SAML-protokollet i Azure Active Directory B2C

Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.

Den här funktionen är endast tillgänglig för anpassade principer. För installationssteg väljer du Anpassad princip i föregående väljare.

Kommentar

I Azure Active Directory B2C är anpassade principer främst utformade för att hantera komplexa scenarier. I de flesta scenarier rekommenderar vi att du använder inbyggda användarflöden. Om du inte har gjort det kan du läsa mer om startpaketet för anpassad princip i Kom igång med anpassade principer i Active Directory B2C.

Den här artikeln visar hur du aktiverar inloggning för användare från en Salesforce-organisation med anpassade principer i Azure Active Directory B2C (Azure AD B2C). Du aktiverar inloggning genom att lägga till en SAML-identitetsprovider i en anpassad princip.

Förutsättningar

Konfigurera Salesforce som identitetsprovider

  1. Logga in på Salesforce.
  2. På den vänstra menyn under Inställningar expanderar du Identitet och väljer sedan Identitetsprovider.
  3. Välj Aktivera identitetsprovider.
  4. Under Välj certifikatet väljer du det certifikat som du vill att Salesforce ska använda för att kommunicera med Azure AD B2C. Du kan använda standardcertifikatet.
  5. Klicka på Spara.

Skapa en ansluten app i Salesforce

  1. På sidan Identitetsprovider väljer du Tjänstleverantörer skapas nu via Anslut ed Apps. Klicka här.

  2. Under Grundläggande information anger du de värden som krävs för din anslutna app.

  3. Markera kryssrutan Aktivera SAML under Web App Inställningar.

  4. I fältet Entitets-ID anger du följande URL. Se till att du ersätter värdet för your-tenant med namnet på din Azure AD B2C-klientorganisation.

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

    Använd följande format när du använder en anpassad domän:

    https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    
  5. I fältet ACS URL anger du följande URL. Se till att du ersätter värdet för your-tenant med namnet på din Azure AD B2C-klientorganisation.

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

    Använd följande format när du använder en anpassad domän:

    https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
    
  6. Rulla längst ned i listan och klicka sedan på Spara.

Hämta metadata-URL:en

  1. På översiktssidan för din anslutna app klickar du på Hantera.
  2. Kopiera värdet för slutpunkten för metadataidentifiering och spara det sedan. Du kommer att använda den senare i den här artikeln.

Konfigurera Salesforce-användare att federera

  1. På sidan Hantera i din anslutna app klickar du på Hantera profiler.
  2. Välj de profiler (eller grupper av användare) som du vill federera med Azure AD B2C. Som systemadministratör markerar du kryssrutan Systemadministratör så att du kan federera med ditt Salesforce-konto.

Skapa ett självsignerat certifikat

Om du inte redan har ett certifikat kan du använda ett självsignerat certifikat. Ett självsignerat certifikat är ett säkerhetscertifikat som inte är signerat av en certifikatutfärdare (CA) och som inte tillhandahåller säkerhetsgarantierna för ett certifikat som signerats av en certifikatutfärdare.

I Windows använder du cmdleten New-SelfSignedCertificate i PowerShell för att generera ett certifikat.

  1. Kör följande PowerShell-kommando för att generera ett självsignerat certifikat. -Subject Ändra argumentet efter behov för ditt program och Azure AD B2C-klientnamn, till exempel contosowebapp.contoso.onmicrosoft.com. Du kan också justera -NotAfter datumet för att ange ett annat förfallodatum för certifikatet.

    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. På Windows-datorn söker du efter och väljer Hantera användarcertifikat

  3. Under Certifikat – aktuell användare väljer du Personliga>certifikat>yourappname.yourtenant.onmicrosoft.com.

  4. Välj certifikatet och välj sedan Åtgärd>alla uppgifter>Exportera.

  5. Välj Nästa>Ja, exportera den privata nyckeln>Nästa.

  6. Acceptera standardinställningarna för Exportera filformat och välj sedan Nästa.

  7. Aktivera alternativet Lösenord , ange ett lösenord för certifikatet och välj sedan Nästa.

  8. Om du vill ange en plats för att spara certifikatet väljer du Bläddra och navigerar till valfri katalog.

  9. I fönstret Spara som anger du ett filnamn och väljer sedan Spara.

  10. Välj Nästa>Slutför.

För att Azure AD B2C ska acceptera .pfx-fillösenordet måste lösenordet krypteras med alternativet TripleDES-SHA1 i exportverktyget för Windows Certificate Store, till skillnad från AES256-SHA256.

Skapa en principnyckel

Du måste lagra certifikatet som du skapade i din Azure AD B2C-klientorganisation.

  1. Logga in på Azure-portalen.
  2. Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
  3. Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
  4. På sidan Översikt väljer du Identity Experience Framework.
  5. Välj Principnycklar och välj sedan Lägg till.
  6. För Alternativ väljer du Upload.
  7. Ange ett Namn för principen. Till exempel SAMLSigningCert. Prefixet B2C_1A_ läggs automatiskt till i namnet på din nyckel.
  8. Bläddra till och välj B2CSigningCert.pfx-certifikatet som du skapade.
  9. Ange lösenordet för certifikatet.
  10. Klicka på Skapa.

Lägga till en anspråksprovider

Om du vill att användarna ska logga in med ett Salesforce-konto måste du definiera kontot som en anspråksprovider som Azure AD B2C kan kommunicera med via en slutpunkt. Slutpunkten innehåller en uppsättning anspråk som används av Azure AD B2C för att verifiera att en viss användare har autentiserats.

Du kan definiera ett Salesforce-konto som en anspråksprovider genom att lägga till det i elementet ClaimsProviders i tilläggsfilen för principen. Mer information finns i definiera en SAML-identitetsprovider.

  1. Öppna TrustFrameworkExtensions.xml.

  2. Hitta elementet ClaimsProviders . Om den inte finns lägger du till den under rotelementet.

  3. Lägg till en ny ClaimsProvider på följande sätt:

    <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. Uppdatera värdet för PartnerEntity med url:en för Salesforce-metadata som du kopierade tidigare.

  5. Uppdatera värdet för båda instanserna av StorageReferenceId till namnet på nyckeln för signeringscertifikatet. Till exempel B2C_1A_SAMLSigningCert.

  6. Leta upp avsnittet <ClaimsProviders> och lägg till följande XML-kodfragment. Om principen redan innehåller den SM-Saml-idp tekniska profilen går du vidare till nästa steg. Mer information finns i Sessionshantering för enkel inloggning.

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

Lägga till en användarresa

I det här läget har identitetsprovidern konfigurerats, men den är ännu inte tillgänglig på någon av inloggningssidorna. Om du inte har en egen anpassad användarresa skapar du en dubblett av en befintlig mallanvändarresa, annars fortsätter du till nästa steg.

  1. Öppna filen TrustFrameworkBase.xml från startpaketet.
  2. Hitta och kopiera hela innehållet i elementet UserJourney som innehåller Id="SignUpOrSignIn".
  3. Öppna TrustFrameworkExtensions.xml och leta upp elementet UserJourneys. Om elementet inte finns lägger du till ett.
  4. Klistra in hela innehållet i elementet UserJourney som du kopierade som underordnat elementet UserJourneys .
  5. Byt namn på ID:t för användarresan. Exempel: Id="CustomSignUpSignIn"

Lägga till identitetsprovidern i en användarresa

Nu när du har en användarresa lägger du till den nya identitetsprovidern i användarresan. Du lägger först till en inloggningsknapp och länkar sedan knappen till en åtgärd. Åtgärden är den tekniska profil som du skapade tidigare.

  1. Leta reda på orkestreringsstegelementet som innehåller Type="CombinedSignInAndSignUp", eller Type="ClaimsProviderSelection" i användarresan. Det är vanligtvis det första orkestreringssteget. Elementet ClaimsProviderSelections innehåller en lista över identitetsprovidrar som en användare kan logga in med. Ordningen på elementen styr ordningen på de inloggningsknappar som visas för användaren. Lägg till ett ClaimsProviderSelection XML-element. Ange värdet för TargetClaimsExchangeId till ett eget namn.

  2. I nästa orkestreringssteg lägger du till ett ClaimsExchange-element . Ange ID:t till värdet för målanspråkets utbytes-ID. Uppdatera värdet för TechnicalProfileReferenceId till ID:t för den tekniska profil som du skapade tidigare.

Följande XML visar de två första orkestreringsstegen för en användarresa med identitetsprovidern:

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

Konfigurera principen för förlitande part

Principen för förlitande part, till exempel SignUpSignIn.xml, anger den användarresa som Azure AD B2C ska köra. Hitta elementet DefaultUserJourney i den förlitande parten. Uppdatera ReferenceId så att det matchar användarens rese-ID, där du lade till identitetsprovidern.

I följande exempel CustomSignUpSignIn för användarresan är ReferenceId inställt på CustomSignUpSignIn:

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

Ladda upp den anpassade principen

  1. Logga in på Azure-portalen.
  2. Välj ikonen Katalog + prenumeration i portalens verktygsfält och välj sedan den katalog som innehåller din Azure AD B2C-klientorganisation.
  3. I Azure-portalen söker du efter och väljer Azure AD B2C.
  4. Under Principer väljer du Identity Experience Framework.
  5. Välj Överför anpassad princip och ladda sedan upp de två principfilerna som du ändrade i följande ordning: tilläggsprincipen, till exempel TrustFrameworkExtensions.xml, och sedan den förlitande partprincipen, till exempel SignUpSignIn.xml.

Testa din anpassade princip

  1. Välj din princip för förlitande part, till exempel B2C_1A_signup_signin.
  2. För Program väljer du ett webbprogram som du registrerade tidigare. Svars-URL :en ska visa https://jwt.ms.
  3. Välj knappen Kör nu.
  4. På registrerings- eller inloggningssidan väljer du Salesforce för att logga in med Salesforce-kontot.

Om inloggningsprocessen lyckas omdirigeras webbläsaren till https://jwt.ms, som visar innehållet i token som returneras av Azure AD B2C.