إعداد الاشتراك وتسجيل الدخول باستخدام حساب LinkedIn باستخدام Azure Active Directory B2C

قبل أن تبدأ استخدم اختر نوع النهجالمحدد لاختيار نوع النهج التي تقوم بإعدادها. يوفر Azure Active Directory B2C طريقتين لتحديد كيفية تفاعل المستخدمين مع تطبيقاتك: من خلال تدفقات محددة مسبقا للمستخدمين أو من خلال سياسات مخصصة قابلة للتكوين بشكل كامل. تختلف الخطوات المطلوبة في هذه المقالة لكل أسلوب.

إشعار

في Azure Active Directory B2C، تم تصميم النُهج المخصصة بشكل أساسي لمعالجة السيناريوهات المعقدة. بالنسبة إلى معظم السيناريوهات، نوصي باستخدام تدفقات المستخدم المضمنة. إذا لم تقم بذلك، تعرف على حزمة بادئ النهج المخصصة في البدء باستخدام النهج المخصصة في Active Directory B2C.

المتطلبات الأساسية

إنشاء تطبيق LinkedIn

لتمكين تسجيل الدخول للمستخدمين الذين لديهم حساب LinkedIn في دليل Azure النشط B2C (Azure AD B2C)، ستحتاج إلى إنشاء تطبيق في ⁧⁩موقع ويب مطوري LinkedIn⁩. لمزيدٍ من المعلومات، راجع تدفق التعليمة البرمجية للتخويل. إذا لم يكن لديك حساب LinkedIn بالفعل، فيمكنك الاشتراك في https://www.linkedin.com/ .

  1. سجل الدخول إلى موقع مطوري LinkedIn باستخدام بيانات اعتماد حسابك على LinkedIn.
  2. حدد تطبيقاتي، ثم انقر فوق إنشاء تطبيق.
  3. أدخل اسم التطبيق، صفحة LinkedIn، وعنوان URL لسياسة الخصوصية، وشعار التطبيق.
  4. الموافقة على شروط استخدام واجهة برمجة التطبيقات على LinkedIn، وانقر على إنشاء تطبيق.
  5. حدد علامة التبويب Auth ضمن مفاتيح المصادقة، مع نسخ القيم الخاصة بـمعرف العميل والعميل السري. ستحتاج إلى كليهما لتكوين LinkedIn كمزود هوية في المستأجر. البيانات السرية للعميل هي بيانات اعتماد أمان مهمة.
  6. حدد قلم تحرير رصاص بجوار عناوين URL المعتمدة لإعادة توجيه التطبيق،ثم حدد إضافة عنوان URL لإعادة التوجيه. أدخل https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. إذا كنت تستخدم مجالاً مخصصاً، أدخل https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. استبدال your-tenant-nameباسم المستأجر الخاص بك، your-domain-nameوبمجالك المخصص. تحتاج إلى استخدم كافة الأحرف الصغيرة عند إدخال اسم المستأجر حتى إذا تم تعريف المستأجر بأحرف كبيرة في Azure AD B2C. حدد تحديث.
  7. بشكل افتراضي، لا تتم الموافقة على تطبيق LinkedIn للنطاقات المتعلقة بتسجيل الدخول. لطلب المراجعة، حدد علامة التبويب المنتجات، ثم حدد تسجيل الدخول باستخدام LinkedIn. عند اكتمال المراجعة، تُضاف النطاقات المطلوبة إلى التطبيق الخاص بك.

    إشعار

    يمكنك عرض النطاقات المسموح بها حاليًا لتطبيقك في علامة التبويب Auth في قسم نطاقات OAuth 2.0.

تكوين LinkedIn كموفر هوية

  1. سجّل الدخول إلى مدخل Azure بصفتك المسؤول العام عن مستأجر Azure AD B2C.
  2. إذا كان لديك حق الوصول إلى عدة مستأجرين، فحدد رمز الإعدادات في القائمة العلوية للتبديل إلى مستأجر Azure AD B2C من قائمة Directories + subscriptions.
  3. اختر All services في الزاوية العلوية اليسرى من مدخل Microsoft Azure، ثم ابحث عن Azure AD B2C وحدده.
  4. حدد موفري الهوية،ثم حدد LinkedIn.
  5. أدخل اسمًا. على سبيل المثال، LinkedIn.
  6. بالنسبة إلى Client ID، أدخل معرف العميل لتطبيق LinkedIn الذي أنشأته سابقًا.
  7. بالنسبة لـ سر العميل، أدخل البيانات السرية للعميل التي قمت بتسجيلها.
  8. حدد حفظ.

أضف مزود هوية LinkedIn إلى تدفق المستخدم

عند هذه النقطة، تم إعداد موفر هوية LinkedIn، ولكنه غير متوفر بعد في أي من صفحات تسجيل الدخول. لإضافة مزود هوية LinkedIn إلى تدفق المستخدم

  1. في مستأجر Azure AD B2C، حدّد User flows.
  2. انقر فوق تدفق المستخدم الذي تريد إضافة موفر هوية LinkedIn.
  3. ضمن موفرو الهوية الاجتماعية ، حدد LinkedIn.
  4. حدد حفظ.
  5. لاختبار سياستك، حدّد "Run user flow".
  6. للتطبيق، حدد تطبيق الويب المسمى testapp1 الذي قمت بتسجيله مسبقًا. عنوان URL الرد يجب أن يعرض https://jwt.ms.
  7. حدّد الزر تشغيل تدفق المستخدم.
  8. من صفحة التسجيل أو تسجيل الدخول، حدد موقع LinkedIn لتسجيل الدخول باستخدام حساب LinkedIn.

إذا نجحت عملية تسجيل الدخول، فستتم إعادة توجيه المستعرض الخاص بك إلى، https://jwt.ms، والذي يعرض محتويات الرمز المميز الذي تم إرجاعه بواسطة Azure AD B2C.

إنشاء مفتاح نهج

ستحتاج إلى تخزين بيانات العميل السرية التي سجلتها سابقًا في مستأجر Azure AD B2C.

  1. سجل الدخول إلى مدخل Azure.
  2. إذا كان لديك حق الوصول إلى عدة مستأجرين، فحدد رمز الإعدادات في القائمة العلوية للتبديل إلى مستأجر Azure AD B2C من قائمة Directories + subscriptions.
  3. اختر كل الخدمات في الزاوية العلويةِ اليسرى من مدخل Microsoft Azure، ثم ابحث عن Azure AD B2Cوحدده.
  4. في صفحة نظرة عامة، حدد Identity Experience Framework.
  5. حدد Policy keys ثم حدد Add.
  6. بالنسبة للخيارات، اختر Manual .
  7. أدخِل اسمًا لمفتاح النهج. على سبيل المثال، LinkedInSecret. تتم إضافة السابقة "متاجرة عمل-مستهلك _1A_" تلقائيًا إلى اسم المفتاح الخاص بك.
  8. في البيانات السرية، أدخِل بيانات العميل السرية التي سجلتها سابقًا.
  9. بالنسبة إلى Key usage، حدد Signature.
  10. انقر فوق إنشاء.

تكوين LinkedIn كموفر هوية

لتمكين المستخدمين من تسجيل الدخول باستخدام حساب LinkedIn، ستحتاج إلى تعريف الحساب كموفر مطالبات يمكن لـAzure AD B2C الاتصال به من خلال نقطة نهاية. توفر نقطة النهاية مجموعة من المطالبات التي يتم استخدامها عن طريق Azure AD B2C للتحقق من مصادقة مستخدمٍ معينٍ.

حدد حساب LinkedIn كمزود للمطالبات عن طريق إضافته إلى عنصر ClaimsProviders في ملف الامتداد الخاص بسياستك.

  1. افتح الملف SocialAndLocalAccounts/TrustFrameworkExtensions.xml في المحرر. هذا الملف في حزمة بداية النهج المخصص الذي قمت بتنزيله كجزء من المتطلبات الأساسية.

  2. ابحث عن عنصر ClaimsProviders. إذا لم يكن موجودًا، فقم بإضافته تحت عنصر الجذر.

  3. قم بإضافة ClaimsProvider جديد على النحو التالي:

    <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. استبدل قيمة client_id بمعرف العميل لتطبيق LinkedIn الذي قمت بتسجيله مسبقًا.

  5. احفظ الملف.

إضافة تحويلات المطالبات

ملف تعريف التقنية LinkedIn يتطلب ExtractGivenNameFromLinkedInResponse و ExtractSurNameFromLinkedInResponse المطالبات التحولات التي يمكن إضافتها إلى قائمة تحويلات المطالبات. إذا لم يكن لديك عنصر ClaimsTransformations محدد في ملفك، فأضف عناصر XML الأصلية كما هو موضح أدناه. تحتاج تحويلات المطالبات أيضًا إلى نوع مطالبة جديد محدد باسم nullStringClaim.

إضافة عنصر BuildingBlocks بالقرب من أعلى الملف TrustFrameworkExtensions.xml. راجع TrustFrameworkBase.xml على سبيل المثال.

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

إضافة الرحلة الخاصة بالمستخدم

عند هذه النقطة، تم إعداد موفر الهوية، ولكنه غير متوفر بعد في أي من صفحات تسجيل الدخول. إذا لم تكن لديك رحلة مستخدم مخصصة خاصة بك، فقم بإنشاء نسخة مكررة من رحلة المستخدم لقالب موجود، وإلا تابع إلى الخطوة التالية.

  1. من حزمة البداية، افتح المَلف TrustFrameworkBase.xml.
  2. ابحث عن المحتويات الكاملة لعنصر UserJourney الذي يتضمن Id="SignUpOrSignIn" وانسخها.
  3. افتح TrustFrameworkExtensions.xml وابحث عن عنصر UserJourneys. إذا لم يكن العنصر موجودًا، فأضف عنصرًا.
  4. الصق المحتوى الكامل لعنصر UserJourney الذي نسخته كعنصر تابع لعنصر UserJourneys.
  5. أعِد تسمية المعرف الخاص بالرحلة. على سبيل المثال، Id="CustomSignUpSignIn".

إضافة موفر الهوية إلى الرحلة

الآن بعد أن أصبحت لديك رحلة مستخدم، أضف موفر الهوية الجديد إلى رحلة المستخدم. تضيف أولاً الزر الخاص بتسجيل الدخول، ثم تربط الزر بإجراءٍ ما. الإجراء هو ملف التعريف الفني الذي قمت بإنشائه مسبقًا.

  1. ابحث عن عنصر خطوة التنسيق الذي يتضمن Type="CombinedSignInAndSignUp"، أو Type="ClaimsProviderSelection" في الرحلة. عادةَ ما تكون الخطوة الأولى للتزامن. يحتوي عنصر ClaimsProviderSelections على قائمة موفري الهوية التي يمكن للمستخدم تسجيل الدخول من خلالها. يتحكم ترتيب العناصر في ترتيب أزرار تسجيل الدخول التي يتم عرضها للمستخدم. أضف عنصر XML ClaimsProviderSelection. تعيين قيمة TargetClaimsExchangeId إلى اسم مألوف.

  2. في خطوة التنسيق التالية، أضف عنصر ClaimsExchange . قم بتعيين المعرف إلى قيمة معرف تبادل المطالبات الهدف. وقم بتحديث قيمة TechnicalProfileReferenceId لمعرف ملف التعريف الفني الذي أنشأته مسبقاً.

يوضح XML التالي أول خطوتين للتنسيق لرحلة المستخدم من خلال موفر الهوية:

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

تكوين نهج جهة الاعتماد

يحدد نهج جهة الاعتماد، على سبيل المثال SignUpSignIn.xml، رحلة المستخدم التي سيقوم Azure AD B2C بتنفيذها. ابحث عن العنصر DefaultUserJourney ضمن جهة الاعتماد. قم بتحديث ReferenceId ليطابق معرّف رحلة المستخدم، الذي أضفت فيه موفر الهوية.

في المثال التالي، بالنسبة إلى CustomSignUpSignInرحلة المستخدم، تم تعيين ReferenceId إلى CustomSignUpSignIn:

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

تحميل النهج المخصص

  1. سجل الدخول إلى مدخل Azure.
  2. حدد مرشح «الدليل+الاشتراك»في القائمة العلوية، ثم حدد الدليل الذي يحتوي على مستأجر Azure AD B2C.
  3. في مدخل Microsoft Azure، ابحث عن Azure AD B2C وحددها.
  4. ضمن Policies، حدد Identity Experience Framework.
  5. حدّد Upload Custom Policy، ثم قم بتحميل ملفي النهج اللذين قمت بتغييرهما بالترتيب التالي: نهج التوسيع، على سبيل المثال TrustFrameworkExtensions.xml، ثم نهج جهة الاعتماد، مثل SignUpSignIn.xml.

اختبار النهج المخصص لديك

  1. حدد نهج جهة الاعتماد، على سبيل المثالB2C_1A_signup_signin.
  2. للوصول إلى التطبيق، حدّد تطبيق الويب الذي قمت بتسجيله مسبقاً. عنوان URL الرد يجب أن يعرض https://jwt.ms.
  3. حدّدالتشغيل الآن الزر.
  4. من صفحة التسجيل أو تسجيل الدخول، حدد موقع LinkedIn لتسجيل الدخول باستخدام حساب LinkedIn.

إذا نجحت عملية تسجيل الدخول، فستتم إعادة توجيه المستعرض الخاص بك إلى، https://jwt.ms، والذي يعرض محتويات الرمز المميز الذي تم إرجاعه بواسطة Azure AD B2C.

الترحيل من v1.0 إلى v2.0

عمل LinkedIn مؤخرًا على تحديث واجهات برمجة التطبيقات من v1.0 إلى v2.0. لترحيل التكوين الموجود إلى التكوين الجديد، استخدم المعلومات الموجودة في الأجزاء التالية لتحديث العناصر الموجودة في التشكيل الجانبي التقني.

استبدال العناصر في بيانات التعريف

في عنصر بيانات التعريف الموجودة من TechnicalProfile، حدّث عناصر البنود التالية من:

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

إلى:

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

إضافة عناصر إلى بيانات التعريف

في بيانات التعريف من TechnicalProfile، إضافة عناصر البنود التالية:

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

تحديث مطالبات الإخراج

في عنصر مطالبات الإخراج الموجودة من TechnicalProfile، حدّث عناصر مطالبات الإخراج التالية من:

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

إلى:

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

إضافة عناصر جديدة لتحويل مطالبات الإخراج

في تحويلات مطالبات الإخراج من TechnicalProfile، إضافة عناصر تحويل مطالبات الإخراج التالية:

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

تحديد تحويلات المطالبات الجديدة ونوع المطالبة

في الخطوة الأخيرة، أضفت تحويلات مطالبات جديدة تحتاج إلى تعريف. لتعريف تحويلات المطالبات، قم بإضافتها إلى قائمة تحويلات المطالبات. إذا لم يكن لديك عنصر ClaimsTransformations محدد في ملفك، فأضف عناصر XML الأصلية كما هو موضح أدناه. تحتاج تحويلات المطالبات أيضًا إلى نوع مطالبة جديد محدد باسم nullStringClaim.

يجب إضافة عنصر BuildingBlocks بالقرب من أعلى الملف. راجع TrustFrameworkBase.xml على سبيل المثال.

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

احصل على عنوان بريد إلكتروني

كجزء من ترحيل LinkedIn من v1.0 إلى v2.0، يتعين استدعاء إضافي إلى واجهة برمجة تطبيقات أخرى للحصول على عنوان البريد الإلكتروني. إذا كنت بحاجة إلى الحصول على عنوان البريد الإلكتروني في أثناء التسجيل، اتخذ ما يلي:

  1. أكمل الخطوات المذكورة أعلاه للسماح لـ Azure AD B2C بالاتحاد مع LinkedIn للسماح للمستخدم بتسجيل الدخول. كجزء من الاتحاد، يتلقى Azure AD B2C رمز الوصول إلى LinkedIn.

  2. حفظ رمز الوصول إلى LinkedIn في المطالبة. اتبع التعليمات هنا.

  3. إضافة موفر المطالبات التالية التي تجعل الطلب إلى /emailAddress واجهة برمجة التطبيقات في LinkedIn. من أجل تخويل هذا الطلب، تحتاج إلى رمز الوصول إلى 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. إضافة خطوة التزامن التالية في رحلة المستخدم الخاص بك، بحيث يتم تشغيل موفر مطالبات واجهة برمجة التطبيقات عند تسجيل دخول مستخدم باستخدام LinkedIn. تأكد من تحديث Order الرقم بشكل مناسب. إضافة هذه الخطوة مباشرة بعد خطوة التزامن الذي يقوم بتشغيل التشكيل الجانبي التقني في 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>
    

يُعد الحصول على عنوان البريد الإلكتروني من LinkedIn في أثناء التسجيل اختياريًا. إذا اخترت عدم الحصول على البريد الإلكتروني من LinkedIn، ولكنك تحتاج إلى رسالة في أثناء التسجيل، يطلب من المستخدم إدخال عنوان البريد الإلكتروني يدويًا والتحقق من صحته.

للحصول على نموذج كامل من نهج يستخدم موفر الهوية LinkedIn راجع حزمة كاتب النهج المخصص.

الترحيل من v1.0 إلى v2.0

عمل LinkedIn مؤخرًا على تحديث واجهات برمجة التطبيقات من v1.0 إلى v2.0. كجزء من الترحيل، لا يتمكن Azure AD B2C من الحصول على الاسم الكامل للمستخدم LinkedIn إلا أثناء التسجيل. إذا كان عنوان البريد الإلكتروني أحد السمات التي يتم تجميعها في أثناء التسجيل، يجب على المستخدم إدخال عنوان البريد الإلكتروني والتحقق منه يدويًا.