RelyingParty

ملاحظة

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

يحدد العنصر RelyingParty الرحلة لفرض الطلب الحالي إلى Azure Active Directory B2C (Azure AD B2C). كما يحدد قائمة المطالبات التي يحتاجها تطبيق الطرف المعتمد (RP) كجزء من الرمز المميز الذي تم إصداره. يقوم تطبيق RP، مثل تطبيق ويب أو جوال أو سطح مكتب، باستدعاء ملف نهج RP. ينفذ ملف نهج RP مهمة معينة، مثل تسجيل الدخول أو إعادة تعيين كلمة مرور أو تحرير ملف تعريف. يمكن للتطبيقات المتعددة استخدام نفس سياسة RP ويمكن لتطبيق واحد استخدام سياسات متعددة. تتلقى جميع تطبيقات RP نفس الرمز المميز مع المطالبات، ويمر المستخدم بنفس رحلة المستخدم.

يظهر المثال التالي عنصر RelyingParty في ملف نهج B2C_1A_signup_signin:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="https://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="your-tenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://your-tenant.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>your-tenant.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="7"/>
      <SessionExpiryType>Rolling</SessionExpiryType>
      <SessionExpiryInSeconds>900</SessionExpiryInSeconds>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="your-application-insights-key" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <ContentDefinitionParameters>
        <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
      </ContentDefinitionParameters>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Description>The policy profile</Description>
      <Protocol Name="OpenIdConnect" />
      <Metadata>collection of key/value pairs of data</Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="loyaltyNumber" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
  ...

يحتوي العنصر RelyingParty على العنصر التالي:

العنصر الأحداث الوصف
DefaultUserJourney 1:1 الرحلة الافتراضية لتطبيق RP.
نقاط النهاية 0:1 قائمة نقاط النهاية. لمزيد من المعلومات، راجع نقطة نهاية UserInfo.
UserJourneyBehaviors 0:1 نطاق سلوكيات الرحلة.
TechnicalProfile 1:1 ملف تعريف فني معتمد من قبل تطبيق RP. يوفر ملف التعريف التقني عقدًا لتطبيق RP للاتصال بـ Azure AD B2C.

تحتاج إلى إنشاء العناصر التابعة RelyingParty بالترتيب المقدم في الجدول السابق.

نقاط النهاية

يحتوي عنصر Endpoints على العنصر التالي:

العنصر الأحداث الوصف
نقطة النهاية 1:1 مرجع إلى نقطة نهاية.

يحتوي عنصر Endpoint على السمات التالية:

السمة مطلوب الوصف
المعرّف نعم معرف فريد لنقطة النهاية.
UserJourneyReferenceId نعم معرف الرحلة في النهج. لمزيد من المعلومات، راجع الرحلات

يظهر المثال التالي جهة الاعتماد مع نقطة النهاية UserInfo:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <Endpoints>
    <Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
  </Endpoints>
  ...

DefaultUserJourney

DefaultUserJourneyيحدد العنصر مرجعًا إلى معرف الرحلة المحددة في نهج "القاعدة أو الملحقات". تظهر الأمثلة التالية رحلة تسجيل الاشتراك أو تسجيل الدخول المحددة في العنصر RelyingParty:

نهج B2C_1A_signup_signin:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn">
  ...

B2C_1A_TrustFrameWorkBase أو B2C_1A_TrustFrameworkExtensionPolicy:

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
  ...

يحتوي عنصر DefaultUserJourney على السمة التالية:

السمة مطلوب الوصف
ReferenceId نعم معرف الرحلة في النهج. لمزيد من المعلومات، راجع الرحلات

UserJourneyBehaviors

يحتوي العنصر UserJourneyBehaviors على العنصر التالي:

العنصر الأحداث الوصف
SingleSignOn 0:1 نطاق سلوك جلسة عمل تسجيل الدخول الأحادي (SSO) للرحلة.
SessionExpiryType 0:1 سلوك المصادقة لجلسة العمل. القيم الممكنة: Rolling أو Absolute. Rollingتشير القيمة (الافتراضية) إلى أن المستخدم سيظل مسجلاً الدخول طالما أن المستخدم نشط باستمرار في التطبيق. تشير القيمة Absolute إلى أن المستخدم مجبر على إعادة المصادقة بعد الفترة الزمنية المحددة بواسطة عمر جلسة التطبيق.
SessionExpiryInSeconds 0:1 تم تحديد عمر ملف تعريف ارتباط جلسة Azure AD B2C كعدد صحيح مخزن على مستعرض المستخدم عند المصادقة الناجحة. المهلة الافتراضية هي 86,400 ثانية (24 ساعة). الحد الأدنى هو 900 ثانية (15 دقيقة). الحد الأقصى هو 86,400 ثانية (24 ساعة).
JourneyInsights 0:1 مفتاح أجهزة Azure Application Insights الذي سيتم استخدامه.
ContentDefinitionParameters 0:1 قائمة أزواج القيم الرئيسية التي سيتم إلحاقها بمعرف URI لتحميل تعريف المحتوى.
JourneyFraming 0:1 يسمح لواجهة المستخدم الخاصة بهذا النهج أن يتم تحميلها في إطار iframe.
ScriptExecution 0:1 أوضاع تنفيذ JavaScript المعتمدة. القيم المحتملة: Allow، أو Disallow (افتراضي).

عند استخدام العناصر المذكورة أعلاه، تحتاج إلى إضافتها إلى عنصر UserJourneyBehaviors بالترتيب المحدد في الجدول. على سبيل المثال، يجب إضافة عنصر JourneyInsights قبل (أعلاه) عنصر ScriptExecution .

SingleSignOn

يحتوي العنصر SingleSignOn على السمات التالية:

السمة مطلوب الوصف
النطاق نعم نطاق سلوك تسجيل الدخول الأحادي. القيم الممكنة: Suppressed أو Tenant أو Application أو Policy. تشير القيمة Suppressed إلى أنه تم منع السلوك، ودائمًا ما يُطلب من المستخدم تحديد موفر الهوية. تشير القيمة Tenant إلى أنه يتم تطبيق السلوك على جميع النهج في المستأجر. على سبيل المثال، لا تتم مطالبة المستخدم الذي يتنقل خلال رحلتين للنهج لمستأجر ما بتحديد مزود الهوية. تشير القيمة Application إلى أنه يتم تطبيق السلوك على جميع النهج الخاصة بالتطبيق الذي يقوم بالطلب. على سبيل المثال، لا تتم مطالبة المستخدم الذي يتنقل خلال رحلتين للنهج لتطبيق ما بتحديد مزود الهوية. تشير القيمة Policy إلى أن السلوك ينطبق فقط على نهج. على سبيل المثال، يُطلب من المستخدم الذي يتنقل عبر رحلتين للنهج لإطار عمل الثقة اختيار موفر الهوية عند التبديل بين النهج.
KeepAliveInDays لا يتحكم في المدة التي يبقى فيها المستخدم مسجلاً الدخول. تعيين القيمة إلى 0 لإيقاف تشغيل وظيفة KMSI. الوضع الافتراضي هو 0 (معطل). الحد الأدنى هو 1 من الأيام. الحد الأقصى هو ⁧90⁩ من الأيام. لمزيد من المعلومات، راجع البقاء مسجل الدخول.
EnforceIdTokenHintOnLogout لا فرض تمرير رمز مميز معرّف تم إصداره مسبَقًا إلى نقطة نهاية تسجيل الخروج كتلميح حول جلسة عمل المستخدم النهائي الحالي المصادق عليها مع العميل. القيم المحتملة: false، أو true (افتراضي). لمزيد من المعلومات، راجع تسجيل الدخول عبر الويب باستخدام OpenID Connect.

JourneyInsights

يحتوي عنصر JourneyInsights على السمات التالية:

السمة مطلوب الوصف
TelemetryEngine نعم يجب أن تكون القيمة ApplicationInsights.
مفتاح الأجهزة نعم السلسلة التي تحتوي على مفتاح الأجهزة لعنصر تفاصيل التطبيق.
DeveloperMode نعم القيم الممكنة: true أو false. في حالة true، تعمل تفاصيل التطبيق على تسريع القياس عن بُعد من خلال مسار المعالجة. هذا الإعداد جيد للتطوير، ولكنه مقيد بأحجام كبيرة. تم تصميم سجلات الأنشطة التفصيلية فقط للمساعدة في تطوير النهج المخصصة. لا تستخدم وضع التطوير في الإنتاج. تجمع السجلات جميع المطالبات المرسلة من وإلى موفري الهوية أثناء التطوير. إذا تم استخدامه في الإنتاج، يتحمل المطور المسؤولية عن البيانات الشخصية التي تم جمعها في سجل App Insights الذي يمتلكه. يتم جمع هذه السجلات التفصيلية فقط عند تعيين هذه القيمة على true.
ClientEnabled نعم القيم الممكنة: true أو false. في حالة true، يرسل البرنامج النصي من جانب العميل الخاص بـ Application Insights لتعقب عرض الصفحة والأخطاء من جانب العميل.
ServerEnabled نعم القيم الممكنة: true أو false. في حالة true، يرسل UserJourneyRecorder JSON الحالي كحدث مخصص إلى Application Insights.
TelemetryVersion نعم يجب أن تكون القيمة 1.0.0.

لمزيد من المعلومات، راجع سجلات التجميع

ContentDefinitionParameters

باستخدام النهج المخصصة في Azure AD B2C، يمكنك إرسال معلمة في سلسلة استعلام. من خلال تمرير المعلمة إلى نقطة نهاية HTML الخاصة بك، يمكنك تغيير محتوى الصفحة ديناميكيًا. على سبيل المثال، يمكنك تغيير صورة الخلفية في صفحة تسجيل الدخول أو تسجيل الدخول إلى Microsoft Azure Active Directory B2C، استنادًا إلى معلمة تقوم بتمريرها من تطبيق الويب أو الجوال. يقوم Azure AD B2C بتمرير معلمات سلسلة الاستعلام إلى ملف HTML الديناميكي، مثل ملف aspx.

يعرض المثال التالي معلمة تسمى campaignId بقيمة hawaii في سلسلة الاستعلام:

https://login.microsoft.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?pB2C_1A_signup_signin&client_id=a415078a-0402-4ce3-a9c6-ec1947fcfb3f&nonce=defaultNonce&redirect_uri=http%3A%2F%2Fjwt.io%2F&scope=openid&response_type=id_token&prompt=login&campaignId=hawaii

يحتوي عنصر ContentDefinitionParameters على العنصر التالي:

العنصر الأحداث الوصف
ContentDefinitionParameter 0:n سلسلة تحتوي على زوج قيمة المفتاح الذي تم إلحاقه بسلسلة الاستعلام الخاصة بـ URI لتحميل تعريف المحتوى.

يحتوي عنصرContentDefinitionParameterعلى السمة التالية:

السمة مطلوب الوصف
الاسم نعم اسم زوج قيمة المفتاح.

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

JourneyFraming

يحتوي عنصر JourneyFraming على السمات التالية:

السمة مطلوب الوصف
تم التمكين نعم تمكين تحميل هذا النهج داخل iframe. القيم المحتملة: false، أو true (افتراضي).
المصادر نعم يحتوي على المجالات التي ستحمّل المضيف iframe. لمزيد من المعلومات، راجع تحميل Azure B2C في iframe.

TechnicalProfile

يحتوي عنصر TechnicalProfile على السمة التالية:

السمة مطلوب الوصف
المعرّف نعم يجب أن تكون القيمة PolicyProfile.

يحتوي TechnicalProfile على العناصر التالية:

العنصر الأحداث الوصف
DisplayName 1:1 السلسلة التي تحتوي على اسم ملف التعريف التقني.
الوصف 0:1 السلسلة التي تحتوي على وصف ملف التعريف التقني.
البروتوكول 1:1 البروتوكول المستخدم للاتحاد.
بيانات التعريف 0:1 مجموعة Item من أزواج المفتاح/القيمة التي يستخدمها البروتوكول للتواصل مع نقطة النهاية في سياق المعاملة لتكوين التفاعل بين الطرف المعتمد والمشاركين الآخرين في المجتمع.
InputClaims 1:1 قائمة بأنواع المطالبات التي يتم أخذها كمدخلات في ملف التعريف التقني. يحتوي كل عنصر من هذه العناصر على مرجع إلى نوع ClaimType تم تحديده بالفعل في قسم ClaimsSchema أو في سياسة يرث منها ملف النهج هذا.
OutputClaims 1:1 قائمة بأنواع المطالبات التي يتم أخذها كمخرجات في ملف التعريف التقني. يحتوي كل عنصر من هذه العناصر على مرجع إلى نوع ClaimType تم تحديده بالفعل في قسم ClaimsSchema أو في سياسة يرث منها ملف النهج هذا.
SubjectNamingInfo 1:1 اسم الموضوع المستخدم في الرموز المميزة.

يحتوي عنصر Protocol على السمة التالية:

السمة مطلوب الوصف
الاسم نعم اسم بروتوكول صالح معتمد من قبل Azure AD B2C يستخدم كجزء من ملف التعريف التقني. القيم الممكنة: OpenIdConnect أو SAML2. تمثل القيمة OpenIdConnect معيار بروتوكول OpenID Connect 1.0 وفقًا لمواصفات أساس OpenID. يمثل SAML2 معيار بروتوكول SAML 2.0 وفقًا لمواصفات OASIS.

بيانات التعريف

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

السمة مطلوب الوصف
IdpInitiatedProfileEnabled لا يشير إلى ما إذا كان التدفق الذي هيأه IDP مدعومًا. القيم المحتملة: true، أو false (افتراضي).
XmlSignatureAlgorithm لا الطرق الذي يستخدمها لا Microsoft Azure Active Directory B2C لتوقيع استجابة SAML. القيم الممكنة: Sha256 أو Sha384 أو Sha512 أو Sha1. تأكد من تكوين خوارزمية التوقيع على كلا الجانبين بنفس القيمة. استخدم فقط الخوارزمية التي تدعمها الشهادة. لتكوين تأكيد SAML، راجع بيانات تعريف ملف التعريف التقني لمصدّر SAML.
DataEncryptionMethod لا يشير إلى الطريقة التي يستخدمها Azure AD B2C لتشفير البيانات باستخدام خوارزمية معيار التشفير المتقدم (AES). تتحكم بيانات التعريف في قيمة العنصر <EncryptedData> في استجابة SAML. القيم المحتملة: Aes256 (افتراضي)، Aes192، وSha512، و Aes128.
KeyEncryptionMethod لا يشير إلى الطريقة التي يستخدمها Azure AD B2C لتشفير نسخة المفتاح التي تم استخدامها لتشفير البيانات. تتحكم بيانات التعريف في قيمة العنصر <EncryptedKey> في استجابة SAML. القيم المحتملة: Rsa15 (افتراضي) - خوارزمية تشفير الإصدار 1.5 من معيار تشفير المفتاح العمومي (PKCS) من RSA، RsaOaep - خوارزمية تشفير التشفير غير المتماثل المثلى RSA (OAEP).
UseDetachedKeys لا القيم المحتملة: true، أو false (افتراضي). عندما يتم تعيين القيمة إلى true، يقوم Azure AD B2C بتغيير تنسيق التأكيدات المشفرة. يؤدي استخدام المفاتيح المنفصلة إلى إضافة التأكيد المشفر باعتباره تابعًا لـ EncrytedAssertion على عكس البيانات المشفرة.
WantsSignedResponses لا يشير إلى ما إذا كان Azure AD B2C يوقع على قسم Response من استجابة SAML. القيم المحتملة: true(افتراضي)، أو false.
RemoveMillisecondsFromDateTime لا يشير إلى ما إذا كانت ستتم إزالة المللي ثانية من قيم التاريخ والوقت ضمن استجابة SAML (بما في ذلك IssueInstant وNotBefore وNotOnOrAfter وAuthnInstant). القيم المحتملة: false(افتراضي)، أو true.
RequestContextMaximumLengthInBytes لا يشير إلى الحد الأقصى لطول معلمة تطبيقات SAMLRelayState. الافتراضي هو 1000. الحد الأقصى 2048.

InputClaims

يحتوي عنصر InputClaims على العنصر التالي:

العنصر الأحداث الوصف
InputClaim 0:n نوع مطالبة إدخال متوقع.

يحتوي عنصر InputClaim على السمات التالية:

السمة مطلوب الوصف
ClaimTypeReferenceId نعم مرجع إلى ClaimType المعرف مسبقاً في قسم ClaimsSchema في ملف النهج.
DefaultValue لا قيمة افتراضية يمكن استخدامها إذا كانت قيمة المطالبة فارغة.
PartnerClaimType لا إرسال المطالبة باسم مختلف كما تم تكوينه في تعريف نوع ClaimType.

OutputClaims

يحتوي عنصر OutputClaims على العنصر التالي:

العنصر الأحداث الوصف
OutputClaim 0:n اسم نوع مطالبة متوقع في القائمة المدعومة للنهج التي يشترك فيها الطرف المعتمد. وهذه المطالبة هي بمثابة ناتج للملف التقني.

يحتوي عنصر OutputClaim على السمات التالية:

السمة مطلوب الوصف
ClaimTypeReferenceId نعم مرجع إلى ClaimType المعرف مسبقاً في قسم ClaimsSchema في ملف النهج.
DefaultValue لا قيمة افتراضية يمكن استخدامها إذا كانت قيمة المطالبة فارغة.
PartnerClaimType لا إرسال المطالبة باسم مختلف كما تم تكوينه في تعريف نوع ClaimType.

SubjectNamingInfo

مع العنصر SubjectNameingInfo، يمكنك التحكم في قيمة موضوع الرمز المميز:

  • رمز JWT المميز - المطالبة sub. هذا هو المبدأ الذي يؤكد الرمز المميز المعلومات حوله، مثل مستخدم التطبيق. هذه القيمة غير قابلة للتغيير وليس ممكنًا إعادة تعيينها أو إعادة استخدامها. من الممكن استخدامه لإجراء فحوصات التخويل الآمنة، على سبيل المثال عند استخدام رمز الوصول المميز للمورد. بشكل افتراضي، يتم ملء مطالبة الموضوع بمعرف الكائن للمستخدم في الدليل. لمزيد من المعلومات، راجع تكوين الرمز المميز وجلسة العمل و تسجيل الدخول الأحادي.
  • رمز SAML المميز - <Subject><NameID> العنصر الذي يعرّف عنصر الموضوع. يمكن تعديل تنسيق NameId.

يحتوي عنصر SubjectNamingInfo على السمة التالية:

السمة مطلوب الوصف
نوع المطالبة نعم مرجع إلى PartnerClaimType الخاص بمطالبة بالمخرجات. يجب تحديد مطالبات الإخراج في مجموعة OutputClaims لنهج الجهة المعتمدة مع PartnerClaimType. على سبيل المثال، <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />، أو <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
تنسيق لا يُستخدم للأطراف المعتمدة على SAML لتعيين تنسيق NameId الذي يتم إرجاعه في تأكيد SAML.

يوضح المثال التالي كيفية تحديد طرف يعتمد على OpenID Connect. تم تكوين معلومات اسم الموضوع بأنه objectId:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

يتضمن رمز JWT المميز المطالبة sub مع المستخدم objectId:

{
  ...
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  ...
}

يوضح المثال التالي كيفية تحديد الطرف المعتمد على SAML. تم تكوين معلومات اسم الموضوع بأنه objectId، وتم توفير format NameId:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
  </TechnicalProfile>
</RelyingParty>