Menyiapkan pendaftaran dan rincian masuk dengan akun LinkedIn menggunakan Azure Active Directory B2C

Sebelum memulai, gunakan pemilih Pilih jenis kebijakan untuk memilih jenis kebijakan yang Anda siapkan. Azure Active Directory B2C menawarkan dua metode untuk menentukan cara pengguna berinteraksi dengan aplikasi Anda: melalui alur pengguna yang telah ditentukan sebelumnya atau melalui kebijakan kustom yang sepenuhnya dapat dikonfigurasi. Langkah yang diperlukan dalam artikel ini berbeda untuk setiap metode.

Catatan

Di Azure Active Directory B2C, kebijakan kustom didesain khusus untuk menangani skenario kompleks. Untuk skenario umum, sebaiknya gunakan alur pengguna bawaan. Jika Anda belum melakukannya, pelajari tentang paket starter kebijakan kustom di Mulai dengan kebijakan kustom di Azure Active Directory B2C.

Prasyarat

Membuat aplikasi LinkedIn

Untuk mengaktifkan sign-in bagi pengguna dengan akun LinkedIn di Azure Active Directory B2C (Azure AD B2C), Anda perlu membuat aplikasi di situs web Pengembang LinkedIn. Untuk informasi selengkapnya, lihat Alur Kode Otorisasi. Jika Anda belum memiliki akun LinkedIn, Anda dapat mendaftar di https://www.linkedin.com/.

  1. Masuk ke situs web Pengembang LinkedIn dengan kredensial akun LinkedIn Anda.
  2. Pilih Aplikasi Saya,lalu klik Buat aplikasi.
  3. Masukkan Nama aplikasi,Halaman LinkedIn,URL kebijakan privasi,dan Logo aplikasi.
  4. Setujui Ketentuan Penggunaan API LinkedIn dan klik Buat aplikasi.
  5. Pilih tab Auth. Di bawah Kunci Autentikasi,salin nilai untuk ID Klien dan Rahasia Klien. Anda akan memerlukan keduanya untuk mengonfigurasi LinkedIn sebagai penyedia identitas di penyewa Anda. Rahasia Klien adalah informasi masuk keamanan yang penting.
  6. Pilih pensil edit di samping URL pengalihan resmi untuk aplikasi Anda, lalu pilih Tambahkan URL pengalihan. Memasuki https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. Jika Anda menggunakan domain kustom, masukkan https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Ganti your-tenant-name dengan nama penyewa Anda, dan your-domain-name dengan domain kustom Anda. Anda perlu menggunakan semua huruf kecil saat memasukkan nama penyewa meskipun penyewa ditentukan dengan huruf besar di Azure AD B2C. Pilih Perbarui.
  7. Secara default, aplikasi LinkedIn Anda tidak disetujui untuk cakupan yang terkait dengan sign in. Untuk meminta peninjauan, pilih tab Produk, lalu pilih Masuk dengan LinkedIn. Ketika peninjauan selesai, cakupan yang diperlukan akan ditambahkan ke aplikasi Anda.

    Catatan

    Anda dapat melihat cakupan yang saat ini diizinkan untuk aplikasi Anda pada tab Auth di bagian cakupan OAuth 2.0.

Mengonfigurasi LinkedIn sebagai penyedia identitas

  1. Masuk ke portal Microsoft Azure sebagai administrator global penyewa Azure AD B2C Anda.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pilih Penyedia identitas, lalu pilih LinkedIn.
  5. Masukkan nama . Misalnya, LinkedIn.
  6. Untuk ID Klien, masukkan ID Klien aplikasi LinkedIn yang Anda buat sebelumnya.
  7. Untuk Rahasia klien, masukkan Rahasia Klien yang Anda rekam.
  8. Pilih Simpan.

Menambahkan penyedia identitas LinkedIn ke alur pengguna

Pada titik ini, penyedia identitas LinkedIn telah disiapkan, tetapi belum tersedia di salah satu halaman masuk. Untuk menambahkan penyedia identitas LinkedIn ke alur pengguna:

  1. Di penyewa AAD B2C Anda, pilih Alur pengguna.
  2. Pilih alur pengguna yang ingin Anda tambahkan penyedia identitas LinkedIn.
  3. Di bawah Penyedia identitas sosial, pilih LinkedIn.
  4. Pilih Simpan.
  5. Untuk menguji kebijakan Anda, pilih Jalankan alur pengguna.
  6. Untuk Aplikasi, pilih aplikasi web bernama testapp1 yang Anda daftarkan sebelumnya. URL Balasan harus menunjukkan https://jwt.ms.
  7. Klik tombol Jalankan alur pengguna.
  8. Dari halaman pendaftaran atau masuk, pilih LinkedIn untuk masuk dengan akun LinkedIn.

Jika proses masuk berhasil, browser Anda dialihkan ke https://jwt.ms, yang menampilkan konten token yang dikembalikan oleh Azure AD B2C.

Buat kunci kebijakan

Anda perlu menyimpan rahasia klien yang sebelumnya Anda rekam di penyewa Azure AD B2C Anda.

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Kunci kebijakan lalu pilih Tambahkan.
  6. Untuk Opsi, pilih Manual.
  7. Masukkan Nama untuk kunci kebijakan. Contohnya, LinkedInSecret. Awalan B2C_1A_ditambahkan secara otomatis ke nama kunci Anda.
  8. Di Rahasia, masukkan rahasia klien Anda yang sebelumnya Anda rekam.
  9. Untuk Penggunaan kunci, pilih Signature.
  10. Klik Buat.

Mengonfigurasi LinkedIn sebagai penyedia identitas

Untuk memungkinkan pengguna masuk menggunakan akun LinkedIn, Anda perlu menentukan akun sebagai penyedia klaim yang dapat dikomunikasikan dengan Azure AD B2C melalui titik akhir. Titik akhir menyediakan set klaim yang digunakan oleh Azure AD B2C untuk memverifikasi bahwa pengguna tertentu telah diautentikasi.

Tentukan akun LinkedIn sebagai penyedia klaim dengan menambahkannya ke elemen ClaimsProviders dalam file ekstensi kebijakan Anda.

  1. Buka file SocialAndLocalAccounts/TrustFrameworkExtensions.xml di editor Anda. File ini ada dalam Paket pemula kebijakan kustom yang Anda unduh sebagai bagian dari salah satu prasyarat.

  2. Temukan elemen ClaimsProviders. Jika tidak ada, tambahkan di bawah elemen akar.

  3. Tambahkan ClaimsProvider baru sebagai berikut:

    <ClaimsProvider>
      <Domain>linkedin.com</Domain>
      <DisplayName>LinkedIn</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="LinkedIn-OAuth2">
          <DisplayName>LinkedIn</DisplayName>
          <Protocol Name="OAuth2" />
          <Metadata>
            <Item Key="ProviderName">linkedin</Item>
            <Item Key="authorization_endpoint">https://www.linkedin.com/oauth/v2/authorization</Item>
            <Item Key="AccessTokenEndpoint">https://www.linkedin.com/oauth/v2/accessToken</Item>
            <Item Key="ClaimsEndpoint">https://api.linkedin.com/v2/me</Item>
            <Item Key="scope">r_emailaddress r_liteprofile</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="external_user_identity_claim_id">id</Item>
            <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
            <Item Key="ResolveJsonPathsInJsonTokens">true</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="id" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName.localized" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName.localized" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="linkedin.com" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="ExtractGivenNameFromLinkedInResponse" />
            <OutputClaimsTransformation ReferenceId="ExtractSurNameFromLinkedInResponse" />
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Ganti nilai client_id dengan ID klien aplikasi LinkedIn yang sebelumnya Anda rekam.

  5. Simpan file.

Menambahkan transformasi klaim

Profil teknis LinkedIn memerlukan transformasi klaim ExtractGivenNameFromLinkedInResponse dan ExtractSurNameFromLinkedInResponse untuk ditambahkan ke daftar ClaimsTransformations. Jika Anda tidak memiliki elemen ClaimsTransformations yang ditentukan dalam file Anda, tambahkan elemen XML induk seperti yang ditunjukkan di bawah ini. Transformasi klaim juga memerlukan jenis klaim baru yang didefinisikan bernama nullStringClaim.

Tambahkan elemen BuildingBlocks di dekat bagian atas file TrustFrameworkExtensions.xml. Lihat TrustFrameworkBase.xml sebagai contoh.

<BuildingBlocks>
  <ClaimsSchema>
    <!-- Claim type needed for LinkedIn claims transformations -->
    <ClaimType Id="nullStringClaim">
      <DisplayName>nullClaim</DisplayName>
      <DataType>string</DataType>
      <AdminHelpText>A policy claim to store output values from ClaimsTransformations that aren't useful. This claim should not be used in TechnicalProfiles.</AdminHelpText>
      <UserHelpText>A policy claim to store output values from ClaimsTransformations that aren't useful. This claim should not be used in 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>

Menambahkan perjalanan pengguna

Pada tahap ini, penyedia identitas telah disiapkan, tetapi belum tersedia di halaman masuk mana pun. Jika Anda tidak memiliki perjalanan pengguna kustom Anda sendiri, buat duplikat perjalanan pengguna template yang sudah ada, jika tidak lanjutkan ke langkah berikutnya.

  1. Buka file TrustFrameworkBase.xml dari paket pemula.
  2. Temukan dan salin seluruh konten elemen UserJourney yang menyertakan Id="SignUpOrSignIn".
  3. Buka TrustFrameworkExtensions.xml dan temukan elemen UserJourneys. Jika elemen tersebut tidak ada, tambahkan.
  4. Tempelkan seluruh konten elemen UserJourney yang Anda salin sebagai anak dari elemen UserJourneys.
  5. Ganti nama Id perjalanan pengguna. Contohnya, Id="CustomSignUpSignIn".

Tambahkan penyedia identitas ke perjalanan pengguna

Sekarang setelah Anda memiliki perjalanan pengguna, tambahkan penyedia identitas baru ke perjalanan pengguna. Anda terlebih dahulu menambahkan tombol masuk, lalu tautkan tombol tersebut ke tindakan. Tindakan ini adalah profil teknis yang Anda buat sebelumnya.

  1. Dalam perjalanan pengguna, temukan elemen langkah orkestrasi yang mencakup Type="CombinedSignInAndSignUp" atau Type="ClaimsProviderSelection". Ini biasanya langkah orkestrasi pertama. Elemen ClaimsProviderSelections berisi daftar penyedia identitas yang dapat digunakan pengguna untuk masuk. Urutan elemen mengontrol urutan tombol masuk yang disajikan kepada pengguna. Tambahkan elemen XML ClaimsProviderSelection. Tetapkan nilai TargetClaimsExchangeId ke nama yang bersahabat.

  2. Pada langkah orkestrasi berikutnya, tambahkan elemen ClaimsExchange. Set Id ke nilai pertukaran klaim target Id. Perbarui nilai TechnicalProfileReferenceId ke Id profil teknis yang Anda buat sebelumnya.

XML berikut menunjukkan dua langkah orkestrasi pertama dari perjalanan pengguna dengan penyedia identitas:

<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-OAuth2" />
  </ClaimsExchanges>
</OrchestrationStep>

Mengonfigurasi kebijakan pihak yang diandalkan

Kebijakan pihak yang diandalkan, misalnya SignUpSignIn.xml, menentukan perjalanan yang akan dijalankan Azure AD B2C. Temukan elemen DefaultUserJourney dalam pihak yang diandalkan. Perbarui ReferenceId agar sesuai dengan ID perjalanan, tempat Anda menambahkan IdP.

Dalam contoh berikut, untuk perjalanan CustomSignUpSignIn, ReferenceId diatur ke CustomSignUpSignIn:

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

Mengunggah kebijakan kustom

  1. Masuk ke portal Azure.
  2. Pilih ikon Direktori + Langganan di toolbar portal, lalu pilih direktori yang berisi penyewa Azure AD B2C Anda.
  3. Di portal Microsoft Azure, cari dan pilih AAD B2C.
  4. Di bagian Kebijakan, pilih IEF.
  5. Pilih Unggah Kebijakan Kustom, lalu unggah dua file kebijakan yang Anda ubah, dalam urutan berikut: kebijakan ekstensi, misalnya TrustFrameworkExtensions.xml, lalu kebijakan pihak yang diandalkan, seperti SignUpSignIn.xml.

Menguji kebijakan kustom Anda

  1. Pilih kebijakan pihak yang mengandalkan Anda, misalnya B2C_1A_signup_signin.
  2. Untuk Aplikasi, pilih aplikasi web yang Anda daftarkan sebelumnya. URL Balasan harus menunjukkan https://jwt.ms.
  3. Pilih tombol Jalankan sekarang.
  4. Dari halaman pendaftaran atau masuk, pilih LinkedIn untuk masuk dengan akun LinkedIn.

Jika proses masuk berhasil, browser Anda dialihkan ke https://jwt.ms, yang menampilkan konten token yang dikembalikan oleh Azure AD B2C.

Migrasi dari v1.0 ke v2.0

LinkedIn baru-baru ini memperbarui API mereka dari v1.0 ke v2.0. Untuk memigrasikan konfigurasi yang sudah ada ke konfigurasi baru, gunakan informasi di bagian berikut untuk memperbarui elemen di profil teknis.

Mengganti item dalam Metadata

Di elemen Metadata yang ada dari TechnicalProfile, perbarui elemen Item berikut dari:

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

Kepada:

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

Menambahkan item ke Metadata

Di Metadata dari TechnicalProfile, tambahkan elemen Item berikut:

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

Perbarui OutputClaims

Dalam OutputClaims dari TechnicalProfile, perbarui elemen OutputClaim berikut dari:

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

Kepada:

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

Menambahkan elemen OutputClaimsTransformation baru

Dalam OutputClaimsTransformasi Dari TechnicalProfile, tambahkan elemen OutputClaimsTransformation berikut:

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

Tentukan transformasi klaim dan jenis klaim baru

Pada langkah terakhir, Anda menambahkan transformasi klaim baru yang harus didefinisikan. Untuk menentukan transformasi klaim, tambahkan ke daftar ClaimsTransformations. Jika Anda tidak memiliki elemen ClaimsTransformations yang ditentukan dalam file Anda, tambahkan elemen XML induk seperti yang ditunjukkan di bawah ini. Transformasi klaim juga memerlukan jenis klaim baru yang didefinisikan bernama nullStringClaim.

Elemen BuildingBlocks harus ditambahkan di dekat bagian atas file. Lihat TrustframeworkBase.xml sebagai contoh.

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

Mendapatkan alamat email

Sebagai bagian dari migrasi LinkedIn dari v1.0 ke v2.0, panggilan tambahan ke API lain diperlukan untuk mendapatkan alamat email. Jika Anda perlu mendapatkan alamat email saat mendaftar, lakukan hal berikut:

  1. Selesaikan langkah-langkah di atas untuk memungkinkan Azure AD B2C bergabung dengan LinkedIn untuk mengizinkan pengguna masuk. Sebagai bagian dari federasi, Azure AD B2C menerima token akses untuk LinkedIn.

  2. Simpan token akses LinkedIn ke dalam klaim. Lihat petunjuk di sini

  3. Tambahkan penyedia klaim berikut yang membuat permintaan ke /emailAddress API LinkedIn. Untuk mengotorisasi permintaan ini, Anda memerlukan token akses 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. Tambahkan orkestrasi berikut ke dalam perjalanan pengguna Anda, sehingga penyedia klaim API dipicu saat pengguna masuk menggunakan LinkedIn. Pastikan untuk memperbarui nomor Order dengan tepat. Tambahkan langkah ini segera setelah langkah orkestrasi yang memicu profil teknis 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>
    

Mendapatkan alamat email dari LinkedIn selama pendaftaran bersifat opsional. Jika Anda memilih untuk tidak mendapatkan email dari LinkedIn tetapi memerlukannya saat mendaftar, pengguna diharuskan memasukkan alamat email secara manual dan memvalidasinya.

Untuk sampel lengkap kebijakan yang menggunakan penyedia identitas LinkedIn, lihat Paket Pemula Kebijakan Kustom.

Migrasi dari v1.0 ke v2.0

LinkedIn baru-baru ini memperbarui API mereka dari v1.0 ke v2.0. Sebagai bagian dari migrasi, Azure AD B2C hanya bisa memperoleh nama lengkap pengguna LinkedIn selama pendaftaran. Jika alamat email adalah salah satu atribut yang dikumpulkan selama pendaftaran, pengguna harus memasukkan alamat email secara manual dan memvalidasinya.