Azure Active Directory B2C: eseguire l'accesso con account Salesforce tramite SAMLAzure Active Directory B2C: Sign in by using Salesforce accounts via SAML

Nota

I criteri personalizzati sono disponibili in anteprima pubblica.Custom policies are in public preview.

I criteri personalizzati sono stati progettati principalmente per professionisti della gestione delle identità che devono affrontare scenari complessi.Custom policies are designed primarily for identity pros who need to address complex scenarios. Per la maggior parte degli scenari è consigliabile usare i criteri predefiniti di Azure Active Directory B2C.For most scenarios, we recommend that you use Azure Active Directory B2C built-in policies. I criteri predefiniti sono più facili da impostare per la configurazione.Built-in policies are easier to set up for your configuration. È possibile usare i criteri predefiniti e i criteri personalizzati nello stesso tenant di Azure Active Directory B2C.You can use built-in and custom policies in the same Azure Active Directory B2C tenant. Per altre informazioni, vedere la panoramica dei criteri personalizzati.To learn more, see the overview of custom policies.

Questo articolo illustra come usare i criteri personalizzati per impostare l'accesso per gli utenti da un'organizzazione Salesforce specifica.This article shows you how to use custom policies to set up sign-in for users from a specific Salesforce organization.

PrerequisitiPrerequisites

Configurazione di Azure AD B2CAzure AD B2C setup

Assicurarsi di avere completato tutti i passaggi di introduzione ai criteri personalizzati in Azure Active Directory B2C (Azure AD B2C),Ensure that you have completed all of the steps that show you how to get started with custom policies in Azure Active Directory B2C (Azure AD B2C).

inclusi i seguenti:These include:

  • Creare un tenant di Azure AD B2CCreate an Azure AD B2C tenant.
  • Creare un'applicazione Azure AD B2CCreate an Azure AD B2C application.
  • Registrare due applicazioni con motore di criteri.Register two policy engine applications.
  • Impostare le chiavi.Set up keys.
  • installare il pacchetto Starter.Set up the starter pack.

Configurazione di SalesforceSalesforce setup

In questo articolo si presuppone che siano già state eseguite le operazioni seguenti:In this article, we assume that you have already done the following:

Configurare Salesforce in modo che gli utenti possano eseguire la federazioneSet up Salesforce so users can federate

Per agevolare la comunicazione tra Azure AD B2C e Salesforce, è necessario ottenere l'URL dei metadati di Salesforce.To help Azure AD B2C communicate with Salesforce, you need to get the Salesforce metadata URL.

Configurare Salesforce come provider di identitàSet up Salesforce as an identity provider

Nota

Questo articolo presuppone che si stia usando Salesforce Lightning Experience.In this article, we assume you are using Salesforce Lightning Experience.

  1. Eseguire l'accesso a Salesforce.Sign in to Salesforce.
  2. In Settings (Impostazioni) nel menu di sinistra espandere Identity (Identità) e quindi fare clic su Identity Provider (Provider di identità).On the left menu, under Settings, expand Identity, and then click Identity Provider.
  3. Fare clic su Enable Identity Provider (Abilita provider di identità).Click Enable Identity Provider.
  4. In Select the certificate (Selezionare il certificato) selezionare il certificato che si desidera venga usato da Salesforce per comunicare con Azure AD B2C.Under Select the certificate, select the certificate you want Salesforce to use to communicate with Azure AD B2C. È possibile usare il certificato predefinito. Fare clic su Salva.(You can use the default certificate.) Click Save.

Creare un'app connessa in SalesforceCreate a connected app in Salesforce

  1. Nella pagina Identity Provider (Provider di identità) passare a Service Providers (Provider di servizi).On the Identity Provider page, go to Service Providers.
  2. Fare clic su Service Providers are now created via Connected Apps. Click here (I provider di servizi vengono ora creati tramite app connesse. Fare clic qui).Click Service Providers are now created via Connected Apps. Click here.
  3. In Basic Information (Informazioni di base) immettere i valori richiesti per l'app connessa.Under Basic Information, enter the required values for your connected app.
  4. In Web App Settings (Impostazioni app Web), selezionare la casella di controllo Enable SAML (Abilita SAML).Under Web App Settings, select the Enable SAML check box.
  5. Nel campo Entity ID (ID entità) immettere l'URL seguente.In the Entity ID field, enter the following URL. Assicurarsi di sostituire il valore per tenantName.Ensure that you replace the value for tenantName. https://login.microsoftonline.com/te/tenantName.onmicrosoft.com/B2C_1A_TrustFrameworkBase
  6. Nel campo ACS URL (URL ACS) immettere l'URL seguente.In the ACS URL field, enter the following URL. Assicurarsi di sostituire il valore per tenantName.Ensure that you replace the value for tenantName. https://login.microsoftonline.com/te/tenantName.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
  7. Lasciare i valori predefiniti per le altre impostazioni.Leave the default values for all other settings.
  8. Scorrere l'elenco fino alla fine e quindi fare clic su Save (Salva).Scroll to the bottom of the list, and then click Save.

Ottenere l'URL dei metadatiGet the metadata URL

  1. Nella pagina di panoramica dell'app connessa fare clic su Manage (Gestisci).On the overview page of your connected app, click Manage.
  2. Copiare il valore per Metadata Discovery Endpoint (Endpoint di individuazione dei metadati) e salvarlo.Copy the value for Metadata Discovery Endpoint, and then save it. Questo valore sarà usato più avanti in questo articolo.You'll use it later in this article.

Configurare gli utenti di Salesforce per la federazioneSet up Salesforce users to federate

  1. Nella pagina Manage (Gestisci) dell'app connessa passare a Profiles (Profili).On the Manage page of your connected app, go to Profiles.
  2. Fare clic su Manage Profiles (Gestisci profili).Click Manage Profiles.
  3. Selezionare i profili (o gruppi di utenti) di cui si intende eseguire la federazione con Azure AD B2C.Select the profiles (or groups of users) that you want to federate with Azure AD B2C. Come amministratore di sistema, è necessario selezionare la casella per System Administrator (Amministratore di sistema) in modo che sia possibile eseguire la federazione con l'account di Salesforce.As a system administrator, select the System Administrator check box, so that you can federate by using your Salesforce account.

Generare un certificato di firma per Azure AD B2CGenerate a signing certificate for Azure AD B2C

Le richieste inviate a Salesforce devono essere firmate da Azure AD B2C.Requests sent to Salesforce need to be signed by Azure AD B2C. Per generare un certificato di firma, aprire Azure PowerShell ed eseguire i comandi seguenti.To generate a signing certificate, open Azure PowerShell, and then run the following commands.

Nota

Assicurarsi di aggiornare il nome del tenant e la password nelle prime due righe.Make sure that you update the tenant name and password in the top two lines.

$tenantName = "<YOUR TENANT NAME>.onmicrosoft.com"
$pwdText = "<YOUR PASSWORD HERE>"

$Cert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "SamlIdp.$tenantName" -Subject "B2C SAML Signing Cert" -HashAlgorithm SHA256 -KeySpec Signature -KeyLength 2048

$pwd = ConvertTo-SecureString -String $pwdText -Force -AsPlainText

Export-PfxCertificate -Cert $Cert -FilePath .\B2CSigningCert.pfx -Password $pwd

Aggiungere un certificato di firma SAML ad Azure AD B2CAdd the SAML signing certificate to Azure AD B2C

Caricare il certificato di firma nel tenant di Azure AD B2C:Upload the signing certificate to your Azure AD B2C tenant:

  1. Passare al tenant di Azure AD B2C.Go to your Azure AD B2C tenant. Fare clic su Impostazioni > Framework dell'esperienza di gestione delle identità > Chiavi dei criteri.Click Settings > Identity Experience Framework > Policy Keys.
  2. Fare clic su +Aggiungi e quindi eseguire le operazioni seguenti:Click +Add, and then:
    1. Fare clic su Opzioni > Carica.Click Options > Upload.
    2. Immettere un Nome, ad esempio SAMLSigningCert.Enter a Name (for example, SAMLSigningCert). Verrà automaticamente aggiunto il prefisso B2C_1A_ al nome della chiave.The prefix B2C_1A_ is automatically added to the name of your key.
    3. Per selezionare il certificato, selezionare upload file control (controllo carica file).To select your certificate, select upload file control.
    4. Immettere la password del certificato impostato nello script di PowerShell.Enter the certificate's password that you set in the PowerShell script.
  3. Fare clic su Crea.Click Create.
  4. Verificare di avere creato una chiave, ad esempio B2C_1A_SAMLSigningCert.Verify that you've created a key (for example, B2C_1A_SAMLSigningCert). Prendere nota del nome completo, incluso B2C_1A_.Take note of the full name (including B2C_1A_). Si farà riferimento a questa chiave in un secondo momento nei criteri.You will refer to this key later in the policy.

Creare il provider di attestazioni SAML Salesforce nei criteri di baseCreate the Salesforce SAML claims provider in your base policy

Per consentire agli utenti di accedere usando Salesforce, è necessario definire Salesforce come provider di attestazioni.You need to define Salesforce as a claims provider so users can sign in by using Salesforce. In altri termini, è necessario specificare l'endpoint con cui comunicherà Azure AD B2C.In other words, you need to specify the endpoint that Azure AD B2C will communicate with. L'endpoint offrirà un set di attestazioni che Azure AD B2C userà per verificare se un utente specifico è stato autenticato.The endpoint will provide a set of claims that Azure AD B2C uses to verify that a specific user has authenticated. È possibile a tale scopo aggiungere un nodo <ClaimsProvider> per Salesforce nel file di estensione dei criteri:To do this, add a <ClaimsProvider> for Salesforce in the extension file of your policy:

  1. Nella directory di lavoro aprire il file di estensione (TrustFrameworkExtensions.xml).In your working directory, open the extension file (TrustFrameworkExtensions.xml).
  2. Trovare la sezione <ClaimsProviders>.Find the <ClaimsProviders> section. Se non esiste, crearla nel nodo radice.If it does not exist, create it under the root node.
  3. Aggiungere un nuovo <ClaimsProvider>:Add a new <ClaimsProvider>:

    <ClaimsProvider>
      <Domain>salesforce</Domain>
      <DisplayName>Salesforce</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="salesforce">
          <DisplayName>Salesforce</DisplayName>
          <Description>Login with your Salesforce account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="RequestsSigned">false</Item>
            <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="SamlAssertionSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="socialIdpUserId" 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="externalIdp"/>
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="SAMLIdp" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Nel nodo <ClaimsProvider>:Under the <ClaimsProvider> node:

  1. Modificare il valore per <Domain> in un valore univoco che distingua <ClaimsProvider> dagli altri provider di identità.Change the value for <Domain> to a unique value that distinguishes <ClaimsProvider> from other identity providers.
  2. Aggiornare il valore per <DisplayName> con un nome visualizzato per il provider di attestazioni.Update the value for <DisplayName> to a display name for the claims provider. Questo valore non viene usato attualmente.Currently, this value is not used.

Aggiornare il profilo tecnicoUpdate the technical profile

Per ottenere un token SAML da Salesforce, è necessario definire i protocolli che Azure AD B2C userà per comunicare con Azure Active Directory (Azure AD).To get a SAML token from Salesforce, define the protocols that Azure AD B2C will use to communicate with Azure Active Directory (Azure AD). Nell'elemento <TechnicalProfile> di <ClaimsProvider> eseguire le operazioni seguenti:Do this in the <TechnicalProfile> element of <ClaimsProvider>:

  1. Aggiornare l'ID del nodo <TechnicalProfile>.Update the ID of the <TechnicalProfile> node. Questo ID viene usato per fare riferimento al profilo tecnico da altre parti dei criteri.This ID is used to refer to this technical profile from other parts of the policy.
  2. Aggiornare il valore di <DisplayName>.Update the value for <DisplayName>. Questo valore verrà visualizzato sul pulsante di accesso nella pagina di accesso.This value is displayed on the sign-in button on your sign-in page.
  3. Aggiornare il valore di <Description>.Update the value for <Description>.
  4. Salesforce usa il protocollo SAML 2.0.Salesforce uses the SAML 2.0 protocol. Assicurarsi che il valore per <Protocol> sia SAML2.Ensure that the value for <Protocol> is SAML2.

Aggiornare la sezione <Metadata> nel file XML precedente in modo da riflettere le impostazioni per l'account di Salesforce specifico.Update the <Metadata> section in the preceding XML to reflect the settings for your specific Salesforce account. Nel codice XML aggiornare i valori di metadati come indicato di seguito:In the XML, update the metadata values:

  1. Aggiornare il valore di <Item Key="PartnerEntity"> con l'URL dei metadati di Salesforce copiato in precedenza.Update the value of <Item Key="PartnerEntity"> with the Salesforce metadata URL you copied earlier. L'URL si presenta nel formato seguente:It has the following format:

    https://contoso-dev-ed.my.salesforce.com/.well-known/samlidp/connectedapp.xml

  2. Nella sezione <CryptographicKeys> aggiornare il valore per entrambe le istanze di StorageReferenceId al nome della chiave del certificato di firma, ad esempio B2C_1A_SAMLSigningCert.In the <CryptographicKeys> section, update the value for both instances of StorageReferenceId to the name of the key of your signing certificate (for example, B2C_1A_SAMLSigningCert).

Caricare il file di estensione per la verificaUpload the extension file for verification

I criteri sono a questo punto configurati in modo che Azure AD B2C possa comunicare con Salesforce.Your policy is now configured so that Azure AD B2C knows how to communicate with Salesforce. Provare a caricare il file di estensione dei criteri per verificare che non vi siano problemi.Try uploading the extension file of your policy, to verify that there aren't any issues so far. Per caricare il file di estensione dei criteri:To upload the extension file of your policy:

  1. Nel tenant di Azure AD B2C passare al pannello Tutti i criteri.In your Azure AD B2C tenant, go to the All Policies blade.
  2. Selezionare la casella di controllo Sovrascrivi il criterio se esistente.Select the Overwrite the policy if it exists check box.
  3. Caricare il file di estensione (TrustFrameworkExtensions.xml).Upload the extension file (TrustFrameworkExtensions.xml). Verificare che la relativa convalida abbia esito positivo.Ensure that it doesn't fail validation.

Registrare il provider di attestazioni SAML Salesforce in un percorso utenteRegister the Salesforce SAML claims provider to a user journey

È ora necessario aggiungere il provider di identità SAML Salesforce in uno dei percorsi utente.Next, add the Salesforce SAML identity provider to one of your user journeys. Il provider di identità è a questo punto configurato, ma non è disponibile in alcuna delle pagine di iscrizione o di accesso.At this point, the identity provider has been set up, but it’s not available on any of the user sign-up or sign-in pages. Per aggiungere il provider di identità a una pagina di accesso, creare prima di tutto un duplicato di un percorso utente di modello esistente.To add the identity provider to a sign-in page, first, create a duplicate of an existing template user journey. Modificare quindi il modello in modo che includa anche il provider di identità di Azure AD.Then, modify the template so that it also has the Azure AD identity provider.

  1. Aprire il file di base dei criteri, ad esempio TrustFrameworkBase.xml.Open the base file of your policy (for example, TrustFrameworkBase.xml).
  2. Individuare l'elemento <UserJourneys> e quindi copiare l'intero valore <UserJourney>, incluso Id=”SignUpOrSignIn”.Find the <UserJourneys> element, and then copy the entire <UserJourney> value, including Id=”SignUpOrSignIn”.
  3. Aprire il file di estensione, ad esempio TrustFrameworkExtensions.xml.Open the extension file (for example, TrustFrameworkExtensions.xml). Trovare l'elemento <UserJourneys>.Find the <UserJourneys> element. Se l'elemento non esiste, crearne uno.If the element doesn't exist, create one.
  4. Incollare l'intero <UserJourney> copiato come figlio dell'elemento <UserJourneys>.Paste the entire copied <UserJourney> as a child of the <UserJourneys> element.
  5. Rinominare l'ID del nuovo <UserJourney>, ad esempio, SignUpOrSignUsingContoso.Rename the ID of the new <UserJourney> (for example, SignUpOrSignUsingContoso).

Visualizzare il pulsante del provider di identitàDisplay the identity provider button

L'elemento <ClaimsProviderSelection> è analogo a un pulsante di provider di identità in una pagina di iscrizione o accesso.The <ClaimsProviderSelection> element is analogous to an identity provider button on a sign-up or sign-in page. Se si aggiunge un elemento <ClaimsProviderSelection> per Salesforce, viene visualizzato un nuovo pulsante quando l'utente accede alla pagina.By adding an <ClaimsProviderSelection> element for Salesforce, a new button appears when a user goes to this page. Per visualizzare il pulsante del provider di identità:To display the identity provider button:

  1. Nell'elemento <UserJourney> creato trovare l'elemento <OrchestrationStep> con Order="1".In the <UserJourney> that you created, find the <OrchestrationStep> with Order="1".
  2. Aggiungere il codice XML seguente:Add the following XML:

    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
    
  3. Impostare TargetClaimsExchangeId su un valore logico.Set TargetClaimsExchangeId to a logical value. È consigliabile seguire la stessa convenzione degli altri, ad esempio [ClaimProviderName]Exchange.We recommend following the same convention as others (for example, [ClaimProviderName]Exchange).

Il pulsante è a questo punto posizionato ed è necessario collegarlo a un'azione.Now that you have an identity provider button in place, link it to an action. L'azione in questo caso riguarda la possibilità da parte di Azure AD B2C di comunicare con Salesforce per ricevere un token SAML.In this case, the action is for Azure AD B2C to communicate with Salesforce to receive a SAML token. Collegare a tal fine il profilo tecnico per il provider di attestazioni SAML Salesforce:You can do this by linking the technical profile for your Salesforce SAML claims provider:

  1. Nel nodo <UserJourney> trovare l'elemento <OrchestrationStep> con Order="2".In the <UserJourney> node, find the <OrchestrationStep> with Order="2".
  2. Aggiungere il codice XML seguente:Add the following XML:

    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="ContosoProfile" />
    
  3. Aggiornare l'elemento Id allo stesso valore usato in precedenza per TargetClaimsExchangeId.Update Id to the same value that you used earlier for TargetClaimsExchangeId.

  4. Aggiornare TechnicalProfileReferenceId all'elemento Id del profilo tecnico creato in precedenza, ad esempio ContosoProfile.Update TechnicalProfileReferenceId to the Id of the technical profile you created earlier (for example, ContosoProfile).

Caricare il file di estensione aggiornatoUpload the updated extension file

La modifica del file di estensione è completata.You are done modifying the extension file. Salvare e caricare il file.Save and upload this file. Verificare che tutte le convalide abbiano esito positivo.Ensure that all validations succeed.

Aggiornare il file della relying partyUpdate the relying party file

È ora necessario aggiornare il file della relying party (RP) che avvierà il percorso utente appena creato:Next, update the relying party (RP) file that initiates the user journey that you created:

  1. Creare una copia di SignUpOrSignIn.xml nella directory di lavoro.Make a copy of SignUpOrSignIn.xml in your working directory. Rinominare quindi il file, ad esempio SignUpOrSignInWithAAD.xml.Then, rename it (for example, SignUpOrSignInWithAAD.xml).
  2. Aprire il nuovo file e aggiornare l'attributo PolicyId per <TrustFrameworkPolicy> con un valore univoco,Open the new file and update the PolicyId attribute for <TrustFrameworkPolicy> with a unique value. che sarà il nome dei criteri, ad esempio SignUpOrSignInWithAAD.This is the name of your policy (for example, SignUpOrSignInWithAAD).
  3. Modificare l'attributo ReferenceId in <DefaultUserJourney> in modo che corrisponda all'elemento Id del nuovo percorso utente creato, ad esempio SignUpOrSignUsingContoso.Modify the ReferenceId attribute in <DefaultUserJourney> to match the Id of the new user journey that you created (for example, SignUpOrSignUsingContoso).
  4. Salvare le modifiche e caricare il file.Save your changes, and then upload the file.

Testare e risolvere i problemiTest and troubleshoot

Per testare i criteri personalizzati appena caricati, nel portale di Azure passare al pannello dei criteri e quindi fare clic su Esegui ora.To test the custom policy that you just uploaded, in the Azure portal, go to the policy blade, and then click Run now. Se i test hanno esito negativo, vedere l'articolo sulla risoluzione dei problemi relativi a criteri personalizzati.If it fails, see Troubleshoot custom policies.

Passaggi successiviNext steps

Inviare commenti e suggerimenti all'indirizzo AADB2CPreview@microsoft.com.Provide feedback to AADB2CPreview@microsoft.com.