Nota
In Azure Active Directory B2C i criteri personalizzati sono stati progettati principalmente per far fronte a scenari complessi. Per la maggior parte degli scenari, è consigliabile usare i flussi utente predefiniti. In caso contrario, vedere Introduzione ai criteri personalizzati in Active Directory B2C.
Questo articolo illustra come consentire l'accesso agli utenti di un'organizzazione Salesforce usando criteri personalizzati in Azure Active Directory B2C (Azure AD B2C). Per abilitare l'accesso, aggiungere un provider di identità SAML a un criterio personalizzato.
Configurare Salesforce come provider di identità
- Eseguire l'accesso a Salesforce.
- Nel menu a sinistra espandere Identity (Identità) in Settings (Impostazioni) e quindi selezionare Identity Provider (Provider di identità).
- Selezionare Enable Identity Provider (Abilita provider di identità).
- In Select the certificate (Selezionare il certificato) selezionare il certificato che si desidera venga usato da Salesforce per comunicare con Azure AD B2C. È possibile usare il certificato predefinito.
- Fare clic su Salva.
Creare un'app connessa in Salesforce
Nella pagina Provider di identità selezionare Provider di servizi ora creati tramite app Connessione ed. Fare clic qui.
In Basic Information (Informazioni di base) immettere i valori richiesti per l'app connessa.
In Web App Settings (Impostazioni app Web) selezionare la casella Enable SAML (Abilita SAML).
Nel campo Entity ID (ID entità) immettere l'URL seguente. Assicurarsi di sostituire il valore your-tenant
con il nome del tenant di Azure AD B2C.
https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
Quando si usa un dominio personalizzato, usare il formato seguente:
https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
Nel campo ACS URL (URL ACS) immettere l'URL seguente. Assicurarsi di sostituire il valore your-tenant
con il nome del tenant di Azure AD B2C.
https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
Quando si usa un dominio personalizzato, usare il formato seguente:
https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
Scorrere l'elenco fino alla fine e quindi fare clic su Save (Salva).
- Nella pagina di panoramica dell'app connessa fare clic su Manage (Gestisci).
- Copiare il valore per Metadata Discovery Endpoint (Endpoint di individuazione dei metadati) e salvarlo. Questo valore sarà usato più avanti in questo articolo.
Configurare gli utenti di Salesforce per la federazione
- Nella pagina Manage (Gestisci) dell'app connessa fare clic su Manage Profiles (Gestisci profili).
- Selezionare i profili (o gruppi di utenti) di cui si intende eseguire la federazione con 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.
Creare un certificato autofirmato
Se non si ha già un certificato, è possibile usare un certificato autofirmato. Un certificato autofirmato è un certificato di sicurezza non firmato da un'autorità di certificazione (CA) e non fornisce le garanzie di sicurezza di un certificato firmato da una CA.
In Windows usare il cmdlet New-SelfSignedCertificate in PowerShell per generare un certificato.
Eseguire il comando di PowerShell seguente per generare un certificato autofirmato. Modificare l'argomento -Subject
in base alle esigenze dell'applicazione e del nome del tenant di Azure AD B2C, contosowebapp.contoso.onmicrosoft.com
ad esempio . Si può anche modificare la data -NotAfter
per specificare una scadenza diversa per il certificato.
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"
Nel computer Windows cercare e selezionare Gestisci certificati utente
In Certificati - Utente corrente selezionare Certificati>personali>yourappname.yourtenant.onmicrosoft.com.
Selezionare il certificato e quindi selezionare Azione>Tutte le attività>esportate.
Selezionare Avanti>Sì, esportare la chiave>privata Avanti.
Accettare le impostazioni predefinite per Formato file di esportazione e quindi selezionare Avanti.
Abilitare l'opzione Password , immettere una password per il certificato e quindi selezionare Avanti.
Per specificare un percorso per salvare il certificato, selezionare Sfoglia e passare a una directory di propria scelta.
Nella finestra Salva con nome immettere un nome file e quindi selezionare Salva.
Selezionare Next>Finish (Avanti > Fine).
Per consentire ad Azure AD B2C di accettare la password del file pfx, la password deve essere crittografata con l'opzione TripleDES-SHA1 nell'utilità di esportazione dell'archivio certificati di Windows, anziché AES256-SHA256.
In macOS usare Assistente certificati in Accesso portachiavi per generare un certificato.
- Seguire le istruzioni per creare certificati autofirmato in Accesso portachiavi in un Mac.
- Nell'app Accesso portachiavi sul Mac selezionare il certificato creato.
- Selezionare File>Export Items (Esporta elementi file).
- Selezionare un nome file per salvare il certificato. Ad esempio: autofirmato-certificate.p12.
- In Formato file selezionare Scambio di informazioni personali (.p12).
- Seleziona Salva.
- Immettere una password nelle caselle Password e Verifica .
- Sostituire l'estensione del file con estensione pfx. Ad esempio: autofirmato-certificate.pfx.
Creare una chiave dei criteri
È necessario archiviare il certificato creato nel tenant di Azure AD B2C.
- Accedi al portale di Azure.
- Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
- Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
- Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.
- Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
- Per Opzioni scegliere
Upload
.
- Immettere un nome per il criterio. Ad esempio, SAMLSigningCert. Al nome della chiave viene aggiunto automaticamente il prefisso
B2C_1A_
.
- Cercare e selezionare il certificato B2CSigningCert.pfx creato.
- Immettere la password per il certificato.
- Fai clic su Crea.
Aggiungere un provider di attestazioni
Per consentire agli utenti di accedere con un account Salesforce, è necessario definire l'account come provider di attestazioni con cui Azure AD B2C possa comunicare tramite un endpoint. L'endpoint offre un set di attestazioni che vengono usate da Azure AD B2C per verificare se un utente specifico è stato autenticato.
È possibile definire un account Salesforce come provider di attestazioni aggiungendolo all'elemento ClaimsProviders nel file di estensione dei criteri. Per altre informazioni, vedere Definire un provider di identità SAML.
Aprire TrustFrameworkExtensions.xml.
Trovare l'elemento ClaimsProviders. Se non esiste, aggiungerlo nell'elemento radice.
Aggiungere un nuovo ClaimsProvider come illustrato di seguito:
<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>
Aggiornare il valore di PartnerEntity con l'URL dei metadati di Salesforce copiato in precedenza.
Aggiornare il valore di entrambe le istanze di StorageReferenceId con il nome della chiave del certificato di firma. Ad esempio, B2C_1A_SAMLSigningCert.
Individuare la sezione <ClaimsProviders>
e aggiungere il frammento XML seguente. Se il criterio contiene già il profilo tecnico SM-Saml-idp
, andare al passaggio successivo. Per altre informazioni, vedere Gestione delle sessioni Single Sign-On.
<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>
Salva il file.
Aggiungere un percorso utente
A questo punto, il provider di identità è stato configurato, ma non è ancora disponibile in nessuna delle pagine di accesso. Se non si ha un percorso utente personalizzato, creare un duplicato di un percorso utente modello esistente, altrimenti continuare con il passaggio successivo.
- Aprire il file TrustFrameworkBase.xml dallo starter pack.
- Trovare e copiare l'intero contenuto dell'elemento UserJourney che include
Id="SignUpOrSignIn"
.
- Aprire TrustFrameworkExtensions.xml e trovare l'elemento UserJourneys. Se l'elemento non esiste, aggiungerne uno.
- Incollare l'intero contenuto dell'elemento UserJourney copiato come figlio dell'elemento UserJourneys.
- Rinominare l'ID del percorso utente. Ad esempio,
Id="CustomSignUpSignIn"
.
Aggiungere il provider di identità a un percorso utente
Dopo aver creato un percorso utente, aggiungere il nuovo provider di identità al percorso utente. Aggiungere prima un pulsante di accesso, quindi collegare il pulsante a un'azione. L'azione è il profilo tecnico creato in precedenza.
Trovare l'elemento del passaggio di orchestrazione che include Type="CombinedSignInAndSignUp"
o Type="ClaimsProviderSelection"
nel percorso utente. In genere è il primo passaggio di orchestrazione. L'elemento ClaimsProviderSelections contiene un elenco di provider di identità con cui un utente può accedere. L'ordine degli elementi controlla l'ordine dei pulsanti di accesso presentati all'utente. Aggiungere un elemento XML ClaimsProviderSelection . Impostare il valore di TargetClaimsExchangeId su un nome descrittivo.
Nel passaggio di orchestrazione successivo aggiungere un elemento ClaimsExchange . Impostare ID sul valore dell'ID di scambio di attestazioni di destinazione. Aggiornare il valore di TechnicalProfileReferenceId sull'ID del profilo tecnico creato in precedenza.
Il codice XML seguente illustra i primi due passaggi di orchestrazione di un percorso utente con il provider di identità:
<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>
I criteri della relying party, ad esempio SignUpSignIn.xml, specificano il percorso utente che verrà eseguito da Azure AD B2C. Trovare l'elemento DefaultUserJourney all'interno della relying party. Aggiornare ReferenceId in modo che corrisponda all'ID percorso utente in cui è stato aggiunto il provider di identità.
Nell'esempio seguente, per il CustomSignUpSignIn
percorso utente, ReferenceId è impostato su CustomSignUpSignIn
:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
Caricare il criterio personalizzati
- Accedi al portale di Azure.
- Selezionare l'icona Directory e sottoscrizione nella barra degli strumenti del portale e quindi la directory contenente il tenant di Azure AD B2C.
- Nel portale di Azure cercare e selezionare Azure AD B2C.
- In Criteri selezionare Identity Experience Framework.
- Selezionare Carica criteri personalizzati e quindi caricare i due file di criteri modificati, nell'ordine seguente: i criteri di estensione, ad esempio , quindi i criteri della relying party, ad esempio
TrustFrameworkExtensions.xml
SignUpSignIn.xml
.
Testare i criteri personalizzati
- Selezionare i criteri della relying party, ad esempio
B2C_1A_signup_signin
.
- In Applicazione selezionare un'applicazione Web registrata in precedenza. L'URL di risposta dovrebbe mostrare
https://jwt.ms
.
- Selezionare il pulsante Esegui adesso .
- Nella pagina di iscrizione o accesso selezionare Salesforce per accedere con l'account Salesforce.
Se il processo di accesso ha esito positivo, il browser viene reindirizzato a https://jwt.ms
, che visualizza il contenuto del token restituito da Azure AD B2C.