Condividi tramite


Configurare l'iscrizione e l'accesso con un account LinkedIn usando Azure Active Directory B2C

Importante

A partire dal 1° maggio 2025, Azure AD B2C non sarà più disponibile per l'acquisto per i nuovi clienti. Altre informazioni sono disponibili nelle domande frequenti.

Prima di iniziare, utilizza il selettore Scegli un tipo di criterio nella parte superiore di questa pagina per scegliere il tipo di criterio che si sta configurando. Azure Active Directory B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utente predefiniti o tramite criteri personalizzati completamente configurabili. I passaggi necessari in questo articolo sono diversi per ogni metodo.

Annotazioni

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.

Prerequisiti

Creare un'applicazione LinkedIn

Per abilitare l'accesso per gli utenti con un account LinkedIn in Azure Active Directory B2C (Azure AD B2C), è necessario creare un'applicazione nel sito Web LinkedIn Developers. Se non si ha già un account LinkedIn, è possibile iscriversi all'indirizzo https://www.linkedin.com/.

  1. Accedere al sito Web LinkedIn Developers con le credenziali dell'account LinkedIn.
  2. Selezionare App personali e quindi fare clic su Crea app.
  3. Immettere Nome app, Pagina LinkedIn, URL dell'informativa sulla privacy e Logo dell'app.
  4. Accettare le condizioni per l'utilizzo dell'API LinkedIn e fare clic su Crea app.
  5. Selezionare la scheda Autenticazione . In Chiavi di autenticazione copiare i valori per ID client e Segreto client. Avrai bisogno di entrambi per configurare LinkedIn come provider di identità nel tuo tenant. Il segreto client è una credenziale di sicurezza importante.
  6. Selezionare la matita di modifica accanto a URL di reindirizzamento autorizzati per l'app e quindi selezionare Aggiungi URL di reindirizzamento. Inserisci https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. Se si usa un dominio personalizzato, immettere https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Sostituire your-tenant-name con il nome del tenant e your-domain-name con il dominio personalizzato. È necessario usare tutte le lettere minuscole quando si immette il nome del tenant anche se il tenant è definito con lettere maiuscole in Azure AD B2C. Selezionare Aggiorna.
  7. Per impostazione predefinita, l'app LinkedIn non è approvata per gli ambiti correlati all'accesso. Per richiedere una revisione, selezionare la scheda Prodotti e quindi selezionare Accedi con LinkedIn usando OpenID Connect. Al termine della revisione, gli ambiti necessari verranno aggiunti all'applicazione.

    Annotazioni

    È possibile visualizzare gli ambiti attualmente consentiti per l'app nella scheda Autenticazione nella sezione Ambiti OAuth 2.0 .

Configurare LinkedIn come provider di identità

  1. Accedere al portale di Azure con un account con almeno privilegi di amministratore del provider di identità esterno .
  2. Se si dispone dell'accesso a più tenant, selezionare l'icona Impostazioni nel menu superiore per passare al tenant di Azure AD B2C dal menu Directory + sottoscrizioni.
  3. Nelle impostazioni del portale | Directory + sottoscrizioni, trova la directory di Azure AD B2C nell'elenco Nome directory e seleziona Cambia.
  4. Scegliere Tutti i servizi nell'angolo in alto a sinistra del portale di Azure, cercare e selezionare Azure AD B2C.
  5. Selezionare Provider di Identità, quindi selezionare Nuovo provider OpenID Connect.
  6. Immettere un nome. Ad esempio, LinkedIn-OIDC.
  7. Per l'URL dei metadati immettere https://www.linkedin.com/oauth/.well-known/openid-configuration.
  8. Per ID client immettere l'ID client dell'applicazione LinkedIn creata in precedenza.
  9. Per Segreto client immettere il segreto client annotato in precedenza.
  10. Per Ambito immettere il messaggio di posta elettronica del profilo openid.
  11. Per Tipo di risposta immettere il codice.
  12. Per ID utente immettere email.
  13. Per il Nome visualizzato, inserisci il nome.
  14. Per Nome specificato immettere given_name.
  15. Per Cognome immettere family_name.
  16. Per Email (Posta elettronica) immettere email.
  17. Seleziona Salva.

Aggiungere un fornitore di identità LinkedIn a un flusso degli utenti

A questo punto, il fornitore di identità LinkedIn è stato configurato, ma non è ancora disponibile in nessuna delle pagine di accesso. Per aggiungere il fornitore di identità LinkedIn a un flusso utente:

  1. Nel tenant di Azure AD B2C selezionare Flussi utente.
  2. Fare clic sul flusso utente a cui si desidera aggiungere il provider di identità LinkedIn.
  3. In Provider di identità personalizzati selezionare LinkedIn-OIDC.
  4. Seleziona Salva.
  5. Per testare la politica, selezionare Esegui flusso utente.
  6. In Applicazione selezionare l'applicazione Web denominata testapp1 registrata in precedenza. L'URL di risposta dovrebbe mostrare https://jwt.ms.
  7. Selezionare il pulsante Esegui flusso utente.
  8. Nella pagina di iscrizione o accesso selezionare LinkedIn-OIDC per accedere con l'account LinkedIn.

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.

Creare una chiave dei criteri

È necessario archiviare il segreto client registrato in precedenza nel tenant di Azure AD B2C.

  1. Accedi al portale di Azure.
  2. Se si dispone dell'accesso a più tenant, selezionare l'icona Impostazioni nel menu superiore per passare al tenant di Azure AD B2C dal menu Directory + sottoscrizioni.
  3. Nelle impostazioni del portale | Directory + sottoscrizioni, trova la directory di Azure AD B2C nell'elenco Nome directory e seleziona Cambia.
  4. Scegliere Tutti i servizi nell'angolo in alto a sinistra del portale di Azure e quindi cercare e selezionare Azure AD B2C.
  5. Nella pagina Panoramica selezionare Identity Experience Framework.
  6. Selezionare Chiavi della politica e quindi Aggiungi.
  7. Per Opzioni scegliere Manual.
  8. Immettere un nome per la chiave della politica. Ad esempio: LinkedInSecret. Il prefisso B2C_1A_ viene aggiunto automaticamente al nome della chiave.
  9. In Segreto immettere il segreto client registrato in precedenza.
  10. Per Utilizzo chiave selezionare Signature.
  11. Clicca su Crea.

Configurare LinkedIn come provider di identità

Per consentire agli utenti di accedere usando un account LinkedIn, è necessario definire l'account come provider di attestazioni con cui Azure AD B2C può comunicare tramite un endpoint. L'endpoint fornisce un set di attestazioni usate da Azure AD B2C per verificare che un utente specifico sia stato autenticato.

Definire un account LinkedIn come provider di attestazioni aggiungendolo all'elemento ClaimsProviders nel file di estensione della politica.

  1. Aprire il file SocialAndLocalAccounts/TrustFrameworkExtensions.xml nell'editor. Questo file si trova nel pacchetto iniziale di criteri personalizzati che hai scaricato come uno dei prerequisiti.

  2. Trova l'elemento ClaimsProviders. Se non esiste, aggiungerlo sotto l'elemento radice.

  3. Aggiungere un nuovo ClaimsProvider come segue:

    <ClaimsProvider>
      <Domain>linkedin.com</Domain>
      <DisplayName>LinkedIn-OIDC</DisplayName>
      <TechnicalProfiles>
          <TechnicalProfile Id="LinkedIn-OIDC">
          <DisplayName>LinkedIn</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
              <Item Key="METADATA">https://www.linkedin.com/oauth/.well-known/openid-configuration</Item>
              <Item Key="scope">openid profile email</Item>
              <Item Key="HttpBinding">POST</Item>
              <Item Key="response_types">code</Item>
              <Item Key="UsePolicyInRedirectUri">false</Item>
              <Item Key="client_id">Your LinkedIn application client ID</Item>
          </Metadata>
          <CryptographicKeys>
              <Key Id="client_secret" StorageReferenceId="B2C_1A_LinkedInSecret" />
          </CryptographicKeys>
          <InputClaims />
          <OutputClaims>
              <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="email" />
              <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
              <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
              <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="linkedin.com" AlwaysUseDefaultValue="true" />
              <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
              <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
              <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
              <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
              <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
          </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Sostituire il valore di client_id con l'ID client dell'applicazione LinkedIn registrata in precedenza.

  5. Salva il file.

Aggiungere un percorso utente

A questo punto, il fornitore dell'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.

  1. Aprire il fileTrustFrameworkBase.xml dallo starter pack.
  2. Trovare e copiare l'intero contenuto dell'elemento UserJourney che include Id="SignUpOrSignIn".
  3. Aprire il TrustFrameworkExtensions.xml e trovare l'elemento UserJourneys . Se l'elemento non esiste, aggiungerne uno.
  4. Incollare l'intero contenuto dell'elemento UserJourney copiato come elemento figlio dell'elemento UserJourneys .
  5. Rinominare l'ID del percorso utente. Ad esempio: Id="CustomSignUpSignIn".

Aggiungere il fornitore di identità a un percorso dell'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.

  1. 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 amichevole.

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

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OIDC" />
  </ClaimsExchanges>
</OrchestrationStep>

Configurare i criteri della relying party

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. Aggiorna ReferenceId affinché corrisponda all'ID del percorso utente in cui hai aggiunto il provider di identità.

Nell'esempio seguente, per il CustomSignUpSignIn percorso utente, ReferenceId è impostato su CustomSignUpSignIn:

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

Caricare i criteri personalizzati

  1. Accedi al portale di Azure.
  2. Selezionare l'icona Directory e sottoscrizione nella barra degli strumenti del portale e quindi selezionare la directory che contiene il tenant di Azure AD B2C.
  3. Nel portale di Azure cercare e selezionare Azure AD B2C.
  4. Sotto Politiche, selezionare Identity Experience Framework.
  5. Selezionare Carica criteri personalizzati e quindi caricare i due file di criteri modificati, nell'ordine seguente: il criterio di estensione, ad esempio TrustFrameworkExtensions.xml, quindi il criterio della parte fiduciante, come SignUpSignIn.xml.

Metti alla prova la tua politica personalizzata.

  1. Seleziona i criteri della tua parte fidata, ad esempio B2C_1A_signup_signin.
  2. In Applicazione selezionare un'applicazione Web registrata in precedenza. L'URL di risposta dovrebbe mostrare https://jwt.ms.
  3. Selezionare il pulsante Esegui adesso .
  4. Nella pagina di iscrizione o accesso selezionare LinkedIn-OIDC per accedere con l'account LinkedIn.

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.

Migrazione dalla versione 1.0 alla versione 2.0

LinkedIn ha aggiornato di recente le API dalla versione 1.0 alla versione 2.0. Per eseguire la migrazione della configurazione esistente alla nuova configurazione, usare le informazioni riportate nelle sezioni seguenti per aggiornare gli elementi nel profilo tecnico.

Sostituire gli elementi nei metadati

Nell'elemento Metadata esistente di TechnicalProfile aggiornare gli elementi Item seguenti da:

<Item Key="ClaimsEndpoint">https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,headline)</Item>
<Item Key="scope">r_emailaddress r_basicprofile</Item>

A:

<Item Key="ClaimsEndpoint">https://api.linkedin.com/v2/me</Item>
<Item Key="scope">r_emailaddress r_liteprofile</Item>

Aggiungere elementi ai metadati

Nei metadati di TechnicalProfile aggiungere gli elementi Item seguenti:

<Item Key="external_user_identity_claim_id">id</Item>
<Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
<Item Key="ResolveJsonPathsInJsonTokens">true</Item>

Aggiornare gli OutputClaims

Negli elementi OutputClaims esistenti del TechnicalProfile aggiornare i seguenti elementi OutputClaim da:

<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName" />

A:

<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName.localized" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName.localized" />

Aggiungere nuovi elementi OutputClaimsTransformation

In OutputClaimsTransformations di TechnicalProfile aggiungere gli elementi OutputClaimsTransformation seguenti:

<OutputClaimsTransformation ReferenceId="ExtractGivenNameFromLinkedInResponse" />
<OutputClaimsTransformation ReferenceId="ExtractSurNameFromLinkedInResponse" />

Definire le nuove trasformazioni delle richieste e il tipo di richiesta

Nell'ultimo passaggio, hai aggiunto nuove trasformazioni dei reclami che devono essere definite. Per definire le trasformazioni delle attestazioni, aggiungerle all'elenco di ClaimsTransformations. Se nel file non è definito un elemento ClaimsTransformations , aggiungere gli elementi XML padre come illustrato di seguito. Le trasformazioni delle attestazioni richiedono anche un nuovo tipo di attestazione definito denominato nullStringClaim.

L'elemento BuildingBlocks deve essere aggiunto nella parte superiore del file. Vedere il TrustframeworkBase.xml come esempio.

<BuildingBlocks>
  <ClaimsSchema>
    <!-- Claim type needed for LinkedIn claims transformations -->
    <ClaimType Id="nullStringClaim">
      <DisplayName>nullClaim</DisplayName>
      <DataType>string</DataType>
      <AdminHelpText>A policy claim to store unuseful output values from ClaimsTransformations. This claim should not be used in a TechnicalProfiles.</AdminHelpText>
      <UserHelpText>A policy claim to store unuseful output values from ClaimsTransformations. This claim should not be used in a TechnicalProfiles.</UserHelpText>
    </ClaimType>
  </ClaimsSchema>

  <ClaimsTransformations>
    <!-- Claim transformations needed for LinkedIn technical profile -->
    <ClaimsTransformation Id="ExtractGivenNameFromLinkedInResponse" TransformationMethod="GetSingleItemFromJson">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputJson" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="nullStringClaim" TransformationClaimType="key" />
        <OutputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="value" />
      </OutputClaims>
    </ClaimsTransformation>
    <ClaimsTransformation Id="ExtractSurNameFromLinkedInResponse" TransformationMethod="GetSingleItemFromJson">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="surname" TransformationClaimType="inputJson" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="nullStringClaim" TransformationClaimType="key" />
        <OutputClaim ClaimTypeReferenceId="surname" TransformationClaimType="value" />
      </OutputClaims>
    </ClaimsTransformation>
  </ClaimsTransformations>
</BuildingBlocks>

Ottenere un indirizzo di posta elettronica

Come parte della migrazione di LinkedIn dalla versione 1.0 alla versione 2.0, è necessaria una chiamata aggiuntiva a un'altra API per ottenere l'indirizzo di posta elettronica. Se è necessario ottenere l'indirizzo di posta elettronica durante l'iscrizione, eseguire le operazioni seguenti:

  1. Completare i passaggi precedenti per consentire ad Azure AD B2C di eseguire la federazione con LinkedIn per consentire all'utente di accedere. Come parte della federazione, Azure AD B2C riceve il token di accesso per LinkedIn.

  2. Salvare il token di accesso LinkedIn in una rivendicazione. Vedere le istruzioni qui.

  3. Aggiungere il provider di attestazioni seguente per effettuare la richiesta all'API di /emailAddress LinkedIn. Per autorizzare questa richiesta, è necessario il token di accesso di LinkedIn.

    <ClaimsProvider>
      <DisplayName>REST APIs</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="API-LinkedInEmail">
          <DisplayName>Get LinkedIn email</DisplayName>
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
              <Item Key="ServiceUrl">https://api.linkedin.com/v2/emailAddress?q=members&amp;projection=(elements*(handle~))</Item>
              <Item Key="AuthenticationType">Bearer</Item>
              <Item Key="UseClaimAsBearerToken">identityProviderAccessToken</Item>
              <Item Key="SendClaimsIn">Url</Item>
              <Item Key="ResolveJsonPathsInJsonTokens">true</Item>
          </Metadata>
          <InputClaims>
              <InputClaim ClaimTypeReferenceId="identityProviderAccessToken" />
          </InputClaims>
          <OutputClaims>
              <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="elements[0].handle~.emailAddress" />
          </OutputClaims>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Aggiungere il passaggio di orchestrazione seguente nel percorso utente, in modo che il provider di attestazioni API venga attivato quando un utente accede usando LinkedIn. Assicurarsi di aggiornare il Order numero in modo appropriato. Aggiungere questo passaggio immediatamente dopo il passaggio di orchestrazione che attiva il profilo tecnico di LinkedIn.

    <!-- Extra step for LinkedIn to get the email -->
    <OrchestrationStep Order="3" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>identityProvider</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
          <Value>identityProvider</Value>
          <Value>linkedin.com</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="GetEmail" TechnicalProfileReferenceId="API-LinkedInEmail" />
      </ClaimsExchanges>
    </OrchestrationStep>
    

Ottenere l'indirizzo di posta elettronica da LinkedIn durante l'iscrizione è facoltativo. Se si sceglie di non ottenere il messaggio di posta elettronica da LinkedIn, ma richiederne uno durante l'iscrizione, l'utente deve immettere manualmente l'indirizzo di posta elettronica e convalidarlo.

Per un esempio completo di una polizza che utilizza il provider di identità LinkedIn, vedere il Custom Policy Starter Pack.

Migrazione dalla versione 1.0 alla versione 2.0

LinkedIn ha aggiornato di recente le API dalla versione 1.0 alla versione 2.0. Nell'ambito della migrazione, Azure AD B2C è in grado di ottenere solo il nome completo dell'utente LinkedIn durante l'iscrizione. Se un indirizzo di posta elettronica è uno degli attributi raccolti durante l'iscrizione, l'utente deve immettere manualmente l'indirizzo di posta elettronica e convalidarlo.