إضافة AD FS كموفر هوية SAML باستخدام نهج مخصصة في Azure Active Directory B2C

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

هذه الميزة متاحة فقط للسياسات المخصصة. لخطوات الإعداد، حدد نهج مخصص في المحدد السابق.

إشعار

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

توضح هذه المقالة كيفية تمكين تسجيل الدخول لحساب مستخدم AD FS باستخدام نهج مخصصة في Azure Active Directory B2C (Azure AD B2C). تمكين تسجيل الدخول عن طريق إضافة موفر هوية SAML إلى نهج مخصص.

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

إنشاء شهادة موقَّعة ذاتيًا

إذا لم يكن لديك بالفعل شهادة، فيمكنك استخدام شهادة موقعة ذاتياً. الشهادة الموقعة ذاتياً هي شهادة أمان غير موقعة من قبل هيئة الشهادات (CA) ولا توفر ضمانات الأمان لشهادة موقعة من قبل هيئة شهادات.

في نظام التشغيل Windows، استخدم الأمر New-SelfSignedCertificate في PowerShell لإنشاء شهادة.

  1. قم بتشغيل أمر PowerShell التالي لإنشاء شهادة موقعة ذاتياً. قم بتعديل الوسيطة -Subject بالشكل المناسب للتطبيق الخاص بك واسم مستأجر Azure AD B2C مثل contosowebapp.contoso.onmicrosoft.com. يمكنك أيضاً ضبط تاريخ -NotAfter لتحديد تاريخ انتهاء صلاحية مختلف للشهادة.

    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"
    
  2. على جهاز الكمبيوتر الذي يعمل بنظام التشغيل Windows، ابحث عن Manage user certificates وحددها

  3. ضمن الشهادات - المستخدم الحالي، حدد شخصي>الشهادات>yourappname.yourtenant.onmicrosoft.com.

  4. حدد الشهادة، ثم حدد الإجراء>كل المهام>تصدير.

  5. حدد التالي>نعم، تصدير المفتاح الخاص>التالي.

  6. اقبل الإعدادات الافتراضية لـ تصدير تنسيق الملف، ثم حدد التالي.

  7. قم بتمكين خيار كلمة المرور، وأدخل كلمة مرور للشهادة، ثم حدد التالي.

  8. لتحديد موقع لحفظ الشهادة الخاصة بك، حدد استعراض وتنقل إلى الدليل الذي تختاره.

  9. في نافذة Save As، أدخل File name، ثم حدد Save.

  10. حدد التالي>وإنهاء.

لكي يقبل Azure AD B2C كلمة مرور ملف pfx. يجب تشفير كلمة المرور باستخدام الخيار TripleDES-SHA1 في الأداة المساعدة Windows Certificate Store Export، بدلاً من AES256-SHA256.

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

تحتاج إلى تخزين شهادتك في مستأجر 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. بالنسبة للخيارات، اختر Upload .
  7. أدخِل اسمًا لمفتاح النهج. على سبيل المثال، SAMLSigningCert. تتم إضافة البادئة B2C_1A_ تلقائيًا إلى اسم مفتاحك.
  8. تصفح لتحديد ملف الشهادة .pfx وتحديده باستخدام المفتاح الخاص.
  9. انقر فوق إنشاء.

إضافة موفر المطالبات

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

يمكنك تحديد حساب AD FS كمزود للمطالبات عن طريق إضافته إلى عنصر ClaimsProviders في ملف الامتداد الخاص بالنهج. لمزيدٍ من المعلومات، راجع تعريف موفر هوية SAML.

  1. افتح TrustFrameworkExtensions.xml.

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

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

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-SAML2">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your AD FS account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="WantsEncryptedAssertions">false</Item>
            <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userPrincipalName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. الاستبدال your-AD-FS-domain باسم المجال AD FS واستبدال قيمة مطالبة الإخراج identityProvider مع DNS الخاص بك (القيمة العشوائية التي تشير إلى المجال الخاص بك).

  5. حدد موقع <ClaimsProviders> القسم ثم أضف مقتطف XML التالي. إذا كان النهج الخاص بك يحتوي بالفعل على ملف التعريف التقني SM-Saml-idp، انتقل إلى الخطوة التالية. لمزيدٍ من المعلومات، راجع إدارة جلسة عمل تسجيل دخول أحادي.

    <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>
    
  6. احفظ الملف.

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

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

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

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-SAML2" />
  </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.

تكوين ثقة جهة مستندة AD FS

لاستخدام AD FS كموفر هوية في Azure AD B2C، تحتاج إلى إنشاء ثقة جهة مستندة AD FS مع بيانات تعريف Azure AD B2C SAML. يظهر المثال التالي عنوان URL لبيانات تعريف SAML لملف تعريف تقني Azure AD B2C:

https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile

عند استخدام مجال مخصص، استخدم التنسيق التالي:

https://your-domain-name/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile

استبدل القيم التالية:

  • your-tenant-name باسم المستأجر الخاص بك، مثل your-tenant.onmicrosoft.com.
  • your-domain-name باسم المجال المخصص، مثل login.contoso.com.
  • your-policy باسم النهج الخاص بك. على سبيل المثال، B2C_1A_signup_signin_adfs.
  • your-technical-profile باسم ملف التعريف التقني لموفر خدمة الهوية SAML. على سبيل المثال، Contoso-SAML2.

افتح مستعرضًا وانتقل إلى عنوان URL. تأكد من كتابة URL الصحيح ومن أن لديك حق الوصول إلى ملف بيانات تعريف XML. لإضافة ثقة جهة مستندة جديدة باستخدام الأداة الإضافية إدارة FS AD وتكوين الإعدادات يدويًّا، قم بتنفيذ الإجراء التالي على ملقم اتحاد. العضوية في Administrators أو ما يعادلها على الكمبيوتر المحلي هو الحد الأدنى المطلوب لإكمال هذا الإجراء.

  1. في إدارة الخادم، حدد أدوات، ثم حدد إدارة AD FS.

  2. حدد Add Relying Party Trust.

  3. على صفحة الترحيب، اختر الدراية بالمطالبات، ثم حدد Start.

  4. على الصفحة تحديد مصدر البيانات، حدد استيراد بيانات حول نشر جهة مستندة عبر الإنترنت أو شبكة محلية، وقدم عنوان URL البيانات الوصفية Azure AD B2C، ثم حدد Next.

  5. في الصفحة تحديد اسم العرض، أدخل اسم عرض، ضمن ملاحظات، وأدخل وصفًا لثقة جهة مستندة، ثم حدد Next.

  6. في الصفحة اختيار نهج التحكم بالوصول، حدد نهجًا، ثم حدد Next.

  7. في الصفحة جاهز لإضافة الثقة، راجع الإعدادات، ثم حدد Next لحفظ معلومات الثقة الخاصة بالطرف المعتمد.

  8. في صفحة إنهاء، حدد إغلاق، يعرض هذا الإجراء تلقائيًّا مربع الحوار تحرير قواعد المطالبة.

  9. حدد إضافة قاعدة.

  10. في قالب قاعدة المطالبة، حدد إرسال سمات LDAP كمطالبات.

  11. توفير اسم قاعدة المطالبة. بالنسبة إلى مخزن السمة، حدد Select Active Directory، وأضف المطالبات التالية، ثم حدد إنهاء وموافق.

    سمة LDAP نوع المطالبة الصادرة
    اسم المستخدم الأساسي اسم المستخدم الأساسي
    اللقب اسم اللقب
    given_name الاسم_المحدد
    عنوان البريد الإلكتروني البريد الإلكتروني
    اسم العرض الاسم

    ملاحظة: لن يتم عرض بعض الأسماء في القائمة المنسدلة نوع المطالبة الصادرة. تحتاج إلى كتابتها يدويًّا. (القائمة المنسدلة قابلة للتحرير).

  12. استنادًا إلى نوع الشهادة، قد تحتاج إلى تعيين خوارزمية HASH. على نافذة خصائص ثقة الطرف المعتمد (B2C Demo)، حدد علامة التبويب متقدمة وقم بتغيير خوارزمية التجزئة الآمنة إلى SHA-256، وحدد موافق.

  13. في إدارة الخادم، حدد أدوات، ثم حدد إدارة AD FS.

  14. حدد ثقة الجهة المستندة التي أنشأتها، وحدد تحديث من بيانات تعريف الاتحاد، ثم حدد تحديث.

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

  1. سجل الدخول إلى مدخل Azure.
  2. إذا كان لديك حق الوصول إلى عدة مستأجرين، فحدد رمز الإعدادات في القائمة العلوية للتبديل إلى مستأجر Azure AD B2C من قائمة Directories + subscriptions.
  3. في مدخل Microsoft Azure، ابحث عن Azure AD B2C وحددها.
  4. ضمن نهج، حدد تحديد إطار التجربة
  5. حدد نهج جهة الاعتماد، على سبيل المثالB2C_1A_signup_signin.
  6. للوصول إلى التطبيق، حدّد تطبيق الويب الذي قمت بتسجيله مسبقاً. عنوان URL الرد يجب أن يعرض https://jwt.ms.
  7. حدّدالتشغيل الآن الزر.
  8. من صفحة التسجيل أو تسجيل الدخول، حدّد Contoso AD FS لتسجيل الدخول باستخدام مزود هوية Contoso AD FS.

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

استكشاف أخطاء خدمة AD FS وإصلاحها

تم تكوين AD FS لاستخدام سجل تطبيق Windows. إذا واجهت مشكلات في إعداد AD FS كموفر هوية SAML باستخدام نهج مخصصة في Azure AD B2C، فقد تحتاج إلى التحقق من سجل أحداث AD FS:

  1. في شريط البحثWindows، اكتب عارض الأحداث، ثم حدد تطبيق سطح المكتب عارض الأحداث.
  2. لعرض سجل جهاز كمبيوتر مختلف، انقر بزر الماوس الأيمن فوق عارض الأحداث (محلي). حدد الاتصال بكمبيوتر آخر،ثم قم بتعبئة الحقول لإكمال مربع الحوار تحديد كمبيوتر.
  3. في عارض الأحداث، افتح سجلات التطبيقات والخدمات.
  4. حدد AD FS، ثم حدد Admin.
  5. لعرض مزيد من المعلومات حول حدث ما، انقر نقرًا مزدوجًا فوق الحدث.

لم يتم توقيع طلب SAML مع حدث خوارزمية التوقيع المتوقعة

يشير هذا الخطأ إلى أن طلب SAML المرسل بواسطة Azure AD B2C غير موقع بخوارزمية التوقيع المتوقع تكوينها في AD FS. على سبيل المثال، يتم توقيع طلب SAML مع خوارزمية التوقيعrsa-sha256، ولكن خوارزمية التوقيع المتوقعة هيrsa-sha1. لحل هذه المشكلة، تأكد من تكوين كل منAzure AD B2C وAD FS بنفس خوارزمية التوقيع.

الخيار 1: تعيين خوارزمية التوقيع في Azure AD B2C

يمكنك تكوين كيفية توقيع طلب SAML في Azure AD B2C. تتحكم بيانات التعريف XmlSignatureAlgorithm في قيمة المعلمة SigAlg(سلسلة الاستعلام أو معلمة النشر) في طلب SAML. المثال التالي يقوم بتكوين Azure AD B2C لاستخدام خوارزمية توقيع rsa-sha256.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>

الخيار 2: تعيين خوارزمية التوقيع في AD FS

بدلًا من ذلك، يمكنك تكوين خوارزمية توقيع طلب SAML المتوقعة في AD FS.

  1. في إدارة الخادم، حدد أدوات، ثم حدد إدارة AD FS.
  2. حدد ثقة الطرف المعتمد الذي قمت بإنشائه سابقًا.
  3. حدد خصائص، ثم حدد متقدمة
  4. قم بتكوين خوارزمية التجزئة الآمنة، وحدد OK لحفظ التغييرات.

لا يحتوي طلب HTTP-Redirect على المعلمة المطلوبة "توقيع" لطلب موقع (AADB2C90168)

الخيار 1: تعيين الردود الموقعة إلى false في Azure AD B2C

يمكنك تعطيل متطلبات الرسالة الموقعة في Azure AD B2C. المثال التالي لتكوين Azure AD B2C إلى لا يتطلب معلمة 'توقيع' للطلب الموقع.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="ResponsesSigned">false</Item>
</Metadata>

الخيار 2: تعيين جهة الاعتماد في AD FS لتوقيع كل من الرسالة والتأكيد

بدلًا من ذلك، يمكنك تكوين جهة الاعتماد في AD FS كما هو مذكور أدناه:

  1. افتح PowerShell كمسؤول ثم قم بتشغيل cmdlet Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion لتوقيع كل من الرسالة والتأكيد.
  2. شغل Set-AdfsRelyingPartyTrust -TargetName <RP Name> وأكد تعيين الخاصية SamlResponseSignatureإلى MessageAndAssertion.