Dela via


Konfigurera registrering och inloggning med ett LinkedIn-konto med Azure Active Directory B2C

Viktigt!

Från och med den 1 maj 2025 är Azure AD B2C inte längre tillgängligt att köpa för nya kunder. Läs mer i våra vanliga frågor och svar.

Innan du börjar använder du väljaren Välj en principtyp överst på den här sidan 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.

Anmärkning

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.

Förutsättningar

Skapa ett LinkedIn-program

Om du vill aktivera inloggning för användare med ett LinkedIn-konto i Azure Active Directory B2C (Azure AD B2C) måste du skapa ett program på LinkedIn Developers webbplats. Om du inte redan har ett LinkedIn-konto kan du registrera dig på https://www.linkedin.com/.

  1. Logga in på webbplatsen LinkedIn Developers med dina LinkedIn-kontoautentiseringsuppgifter.
  2. Välj Mina appar och klicka sedan på Skapa app.
  3. Ange Appnamn, LinkedIn-sida, URL för sekretesspolicy och applogotyp.
  4. Godkänn användningsvillkoren för LinkedIn API och klicka på Skapa app.
  5. Välj fliken Autentisering . Under Autentiseringsnycklar kopierar du värdena för klient-ID och klienthemlighet. Du behöver båda för att konfigurera LinkedIn som en identitetsprovider i din klientorganisation. Klienthemlighet är en viktig säkerhetsautentiseringsuppgift.
  6. Välj redigeringspennan bredvid Auktoriserade omdirigerings-URL:er för din app och välj sedan Lägg till omdirigerings-URL. Ange https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. Om du använder en anpassad domän anger du https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Ersätt your-tenant-name med namnet på din klientorganisation och your-domain-name med din anpassade domän. Du måste använda alla gemener när du anger ditt klientnamn även om klientorganisationen har definierats med versaler i Azure AD B2C. Välj Uppdatera.
  7. Som standard är din LinkedIn-app inte godkänd för omfång som är relaterade till inloggning. Om du vill begära en granskning väljer du fliken Produkter och sedan Logga in med LinkedIn med OpenID Connect. När granskningen är klar läggs de nödvändiga omfången till i ditt program.

    Anmärkning

    Du kan visa de omfång som för närvarande är tillåtna för din app på fliken Auth i avsnittet OAuth 2.0-omfång .

Konfigurera LinkedIn som en identitetsprovider

  1. Logga in på Azure-portalen med ett konto som har minst administratörsbehörighet för extern identitetsprovider .
  2. Om du har åtkomst till flera klientorganisationer väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klientorganisation från menyn Kataloger + prenumerationer.
  3. I portalinställningarna | Sidan Kataloger + prenumerationer, leta upp din Azure AD B2C-katalog i listan Katalognamn och välj sedan Växla.
  4. Välj Alla tjänster i det övre vänstra hörnet i Azure-portalen, sök efter och välj Azure AD B2C.
  5. Välj Identitetsprovidrar och välj sedan Ny OpenID Connect-provider.
  6. Ange ett Namn. Till exempel LinkedIn-OIDC.
  7. För metadata-URL:en anger du https://www.linkedin.com/oauth/.well-known/openid-configuration.
  8. För klient-ID anger du klient-ID för LinkedIn-programmet som du skapade tidigare.
  9. För klienthemligheten anger du den klienthemlighet som du har registrerat.
  10. I omfånget anger du e-post för openid-profil.
  11. Ange kod som svarstyp.
  12. För användar-ID anger du e-post.
  13. För Visningsnamnet anger du namn.
  14. Som Förnamn anger du given_name.
  15. För efternamn anger du family_name.
  16. För e-postmeddelandet anger du e-post.
  17. Välj Spara.

Lägga till LinkedIn-identitetsprovider i ett användarflöde

Nu har LinkedIn-identitetsprovidern konfigurerats, men den är ännu inte tillgänglig på någon av inloggningssidorna. Så här lägger du till LinkedIn-identitetsprovidern i ett användarflöde:

  1. I din Azure AD B2C-klient väljer du Användarflöden.
  2. Klicka på det användarflöde som du vill lägga till LinkedIn-identitetsprovidern.
  3. Under Anpassade identitetsprovidrar väljer du LinkedIn-OIDC.
  4. Välj Spara.
  5. Om du vill testa principen väljer du Kör användarflöde.
  6. För Program väljer du webbprogrammet med namnet testapp1 som du registrerade tidigare. Svar-URL ska visa https://jwt.ms.
  7. Välj knappen Kör användarflöde .
  8. På registrerings- eller inloggningssidan väljer du LinkedIn-OIDC för att logga in med LinkedIn-kontot.

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

Skapa en principnyckel

Du måste lagra klienthemligheten som du tidigare registrerade i din Azure AD B2C-klientorganisation.

  1. Logga in på Azure-portalen.
  2. Om du har åtkomst till flera klientorganisationer väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klientorganisation från menyn Kataloger + prenumerationer.
  3. I portalinställningarna | Sidan Kataloger + prenumerationer, leta upp din Azure AD B2C-katalog i listan Katalognamn och välj sedan Växla.
  4. Välj Alla tjänster i det övre vänstra hörnet i Azure-portalen och sök sedan efter och välj Azure AD B2C.
  5. På sidan Översikt väljer du Identity Experience Framework.
  6. Välj Principnycklar och välj sedan Lägg till.
  7. För Alternativ väljer du Manual.
  8. Ange ett Namn för principnyckeln. Till exempel LinkedInSecret. Prefixet B2C_1A_ läggs automatiskt till i namnet på din nyckel.
  9. I Hemlighet anger du den klienthemlighet som du tidigare spelade in.
  10. För Nyckelanvändning väljer du Signature.
  11. Klicka på Skapa.

Konfigurera LinkedIn som en identitetsprovider

För att göra det möjligt för användare att logga in med ett LinkedIn-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.

Definiera ett LinkedIn-konto som en tillhandahållare av anspråk genom att lägga till det i elementet ClaimsProviders i tilläggsfilen för policyn.

  1. Öppna filen SocialAndLocalAccounts/TrustFrameworkExtensions.xml i redigeringsprogrammet. Den här filen finns i anpassat policystartpaket som du laddade ned som en av de nödvändiga förutsättningarna.

  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>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. Ersätt värdet för client_id med klient-ID:t för LinkedIn-programmet som du registrerade tidigare.

  5. Spara filen.

Lägg 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 filenTrustFrameworkBase.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 ett underordnat element till UserJourneys.
  5. Byt namn på ID:t för användarens resa. Till exempel Id="CustomSignUpSignIn".

Lägg till identitetsleverantören i en användarupplevelse

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 TargetClaimsExchangeId till ett lämpligt namn.

  2. I nästa orkestreringssteg lägger du till ett ClaimsExchange-element . Ange ID:t till värdet för målanspråksutbytes-ID:t. Uppdatera 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="LinkedInExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

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

Konfigurera policyn för den förlitande parten

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

I följande exempel, för användarupplevelsen, är CustomSignUpSignIn inställt på :

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

Ladda upp den anpassade policyn

  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 Portal söker du efter och väljer Azure AD B2C.
  4. Under kategorin 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 policy

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

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

Migrering från v1.0 till v2.0

LinkedIn uppdaterade nyligen sina API:er från v1.0 till v2.0. Om du vill migrera din befintliga konfiguration till den nya konfigurationen använder du informationen i följande avsnitt för att uppdatera elementen i den tekniska profilen.

Ersätt objekt i metadata

I det befintliga metadataelementet i TechnicalProfile uppdaterar du följande objektelement från:

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

Till:

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

Lägga till objekt i metadata

I Metadata för TechnicalProfile lägger du till följande objektelement :

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

Uppdatera OutputClaims

I de befintliga OutputClaims iTechnicalProfile uppdaterar du följande OutputClaim-element från:

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

Till:

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

Lägg till nya OutputClaimsTransformation-element

I OutputClaimsTransformations i TechnicalProfile lägger du till följande OutputClaimsTransformation-element :

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

Definiera de nya anspråkstransformeringar och anspråkstypen

I det sista steget lade du till nya anspråkstransformeringar som måste definieras. Om du vill definiera anspråkstransformationerna lägger du till dem i listan över AnslagsTransformationer. Om du inte har definierat ett ClaimsTransformations-element i filen lägger du till de överordnade XML-elementen enligt nedan. Anspråkstransformeringarna behöver också en ny anspråkstyp med namnet nullStringClaim.

Elementet BuildingBlocks bör läggas till längst upp i filen. Se TrustframeworkBase.xml som exempel.

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

Hämta en e-postadress

Som en del av LinkedIn-migreringen från v1.0 till v2.0 krävs ytterligare ett anrop till ett annat API för att hämta e-postadressen. Om du behöver hämta e-postadressen under registreringen gör du följande:

  1. Slutför stegen ovan så att Azure AD B2C kan federera med LinkedIn så att användaren kan logga in. Som en del av federationen tar Azure AD B2C emot åtkomsttoken för LinkedIn.

  2. Spara LinkedIn-åtkomsttoken i ett anspråk. Se anvisningarna här.

  3. Lägg till följande anspråksprovider som skickar begäran till LinkedIns /emailAddress API. För att kunna auktorisera den här begäran behöver du linkedin-åtkomsttoken.

    <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. Lägg till följande orkestreringssteg i din användarresa så att API-anspråksprovidern utlöses när en användare loggar in med LinkedIn. Se till att uppdatera numret Order på rätt sätt. Lägg till det här steget direkt efter orkestreringssteget som utlöser den tekniska LinkedIn-profilen.

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

Det är valfritt att hämta e-postadressen från LinkedIn under registreringen. Om du väljer att inte hämta e-postmeddelandet från LinkedIn men kräver ett under registreringen måste användaren ange e-postadressen manuellt och verifiera den.

Ett fullständigt exempel på en princip som använder LinkedIn-identitetsprovidern finns i Startpaketet för anpassad princip.

Migrering från v1.0 till v2.0

LinkedIn uppdaterade nyligen sina API:er från v1.0 till v2.0. Som en del av migreringen kan Azure AD B2C bara hämta det fullständiga namnet på LinkedIn-användaren under registreringen. Om en e-postadress är ett av attributen som samlas in under registreringen måste användaren ange e-postadressen manuellt och verifiera den.