حول أدوات حل المطالبات في النُهج المخصصة لـ Microsoft Azure Active Directory B2C

توفر أدوات حل المطالبات في Microsoft Azure Active Directory B2C (Microsoft Azure Active Directory B2C) النُهج المخصصة معلومات السياق حول طلب المصادقة، مثل اسم النهج ومعرف ارتباط الطلب ولغة واجهة المستخدم والمزيد.

لاستخدام محلل مطالبة في مطالبة إدخال أو إخراج، عليك تحديد سلسلة ClaimType، ضمن عنصر ClaimsSchema، ثم تقوم بتعيين DefaultValue للمطالبة محلل في عنصر مطالبة الإدخال أو الإخراج. يقرأ Microsoft Azure Active Directory B2C قيمة محلل المطالبات ويستخدم القيمة في ملف التعريف الفني.

في المثال التالي، يتم تعريف نوع المطالبة المسمى correlationId بـ نوع البيانات من string.

<ClaimType Id="correlationId">
  <DisplayName>correlationId</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Request correlation Id</UserHelpText>
</ClaimType>

في ملف التعريف الفني، قم بتعيين محلل المطالبة إلى نوع المطالبة. يملأ Microsoft Azure Active Directory B2C قيمة محلل المطالبات {Context:CorrelationId} في المطالبة correlationId ويرسل المطالبة إلى ملف التعريف الفني.

<InputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />

الثقافة

يسرد الجدول التالي أدوات حل المطالبات مع معلومات حول اللغة المستخدمة في طلب التخويل:

المطلب ‏‏الوصف مثال
{Culture:LanguageName} رمز ISO المكون من حرفين للغة. en
{Culture:LCID} LCID الخاص برمز اللغة. 1033
{Culture:RegionName} رمز ISO المكون من حرفين للمنطقة. US
{Culture:RFC5646} رمز اللغة RFC5646. ar

تحقق من العرض التوضيحي المباشر لمحللي مطالبات الثقافة.

سياسة

يسرد الجدول التالي أدوات حل المطالبات مع معلومات حول النهج المستخدم في طلب التخويل:

المطلب ‏‏الوصف مثال
{Policy:PolicyId} اسم نهج الطرف المعول. B2C_1A_signup_signin
{Policy:RelyingPartyTenantId} معرف المستأجر لنهج الطرف المعتمد. مستأجرك على microsoft.com
{Policy:TenantObjectId} معرف عنصر المستأجر لنهج الطرف المعتمد. 00000000-0000-0000-0000-000000000000
{Policy:TrustFrameworkTenantId} معرّف المستأجر لإطار عمل الثقة. مستأجرك على microsoft.com

تحقق من العرض التوضيحي المباشر لمحللي مطالبات الثقافة.

السياق

يسرد الجدول التالي أدوات حل المطالبات السياقية لطلب التخويل:

المطلب ‏‏الوصف مثال
{Context:BuildNumber} إصدار Identity Experience Framework (رقم البنية). 1.0.507.0
{Context:CorrelationId} معرف الارتباط. 00000000-0000-0000-0000-000000000000
{Context:DateTimeInUtc} وقت التاريخ بالتوقيت العالمي المتفق عليه (UTC). 10/10/2021 12:00:00 م
{Context:DeploymentMode} وضع توزيع النهج. الإنتاج
{Context:HostName} اسم المضيف للطلب الحالي. contoso.b2clogin.com
{Context:IPAddress} عنوان IP الخاص بالمستخدم. 11.111.111.11
{Context:KMSI} يشير إلى ما إذا كان قد تم تحديد مربع الاختيار الاحتفاظ بتسجيل الدخول. صحيح

تحقق من العرض التوضيحي المباشر لمحللي مطالبات السياق.

المطالبات

يصف هذا القسم كيفية الحصول على قيمة مطالبة كحل مطالبة.

المطلب ‏‏الوصف مثال
{Claim:claim type} معرف نوع مطالبة تم تحديده بالفعل في قسم ClaimsSchema في ملف النهج أو ملف النهج الرئيسي. على سبيل المثال: {Claim:displayName} أو {Claim:objectId}. قيمة نوع المطالبة.

OpenID Connect

يسرد الجدول التالي أدوات حل المطالبات مع معلومات حول OpenID Connect المستخدم في طلب التخويل:

المطلب ‏‏الوصف مثال
{OIDC:AuthenticationContextReferences} معلمة سلسلة الاستعلام acr_values. ‏‫غير متوفر‬
{OIDC:ClientId} معلمة سلسلة الاستعلام client_id. 00000000-0000-0000-0000-000000000000
{OIDC:DomainHint} معلمة سلسلة الاستعلام domain_hint. facebook.com
{OIDC:LoginHint} معلمة سلسلة الاستعلام login_hint. someone@contoso.com
{OIDC:MaxAge} max_age. ‏‫غير متوفر‬
{OIDC:Nonce} معلمة سلسلة الاستعلام Nonce. defaultNonce
{OIDC:Password} تدفق بيانات اعتماد كلمة مرور مالك المورد لاسم مستخدم المستخدم. password1
{OIDC:Prompt} معلمة سلسلة الاستعلام prompt. login
{OIDC:RedirectUri} معلمة سلسلة الاستعلام redirect_uri. https://jwt.ms
{OIDC:Resource} معلمة سلسلة الاستعلام resource. ‏‫غير متوفر‬
{OIDC:Scope} معلمة سلسلة الاستعلام scope. المعرف الشخصي المفتوح
{OIDC:Username} تدفق بيانات اعتماد كلمة مرور مالك المورد لاسم مستخدم المستخدم. emily@contoso.com
{OIDC:IdToken} معلمة سلسلة الاستعلام id token. ‏‫غير متوفر‬

تحقق من العرض التوضيحي المباشر لمحللي مطالبات اتصال OpenID.

معلمات قيمة المفتاح OAuth2

يمكن تعيين أي اسم معلمة مضمن كجزء من طلب OIDC أو OAuth2 إلى مطالبة في رحلة المستخدم. على سبيل المثال، قد يشتمل الطلب من التطبيق على معلمة سلسلة طلب بحث باسم app_session أو loyalty_number أو أي سلسلة استعلام مخصصة.

المطلب ‏‏الوصف مثال
{OAUTH-KV:campaignId} معلمة سلسلة الاستعلام. Hawaii
{OAUTH-KV:app_session} معلمة سلسلة الاستعلام. A3C5R
{OAUTH-KV:loyalty_number} معلمة سلسلة الاستعلام. 1234
{OAUTH-KV:any custom query string} معلمة سلسلة الاستعلام. ‏‫غير متوفر‬

معلمات قيمة مفتاح SAML

في طلب مصادقة SAML، يمكن تعيين أي اسم معلمة مضمن في الطلب، ولكنه غير خاص بالبروتوكول (مثل SAMLRequest) إلى مطالبة في رحلة المستخدم. على سبيل المثال، قد يتضمن الطلب معلمة مخصصة مثل username. ينطبق هذا على كل من طلبات SAML التي بدأها موفر الخدمة وموفر الهوية.

المطلب ‏‏الوصف مثال
{SAML-KV:username} سلسلة استعلام أو معلمة نص POST. username@domain.com
{SAML-KV:loyalty_number} سلسلة استعلام أو معلمة نص POST. 1234
{SAML-KV:any custom query string} سلسلة استعلام أو معلمة نص POST. ‏‫غير متوفر‬

SAML

يسرد الجدول التالي أدوات حل المطالبات مع معلومات حول SAML المستخدم في طلب التخويل:

المطلب ‏‏الوصف مثال
{SAML:AuthnContextClassReferences} قيمة العنصر AuthnContextClassRef من طلب SAML. urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
{SAML:NameIdPolicyFormat} السمة Format، من عنصر NameIDPolicy لطلب SAML. urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
{SAML:Issuer} قيمة عنصر SAML Issuer لطلب SAML. https://contoso.com
{SAML:AllowCreate} قيمة السمة AllowCreate، من عنصر NameIDPolicy لطلب SAML. صواب
{SAML:ForceAuthn} قيمة السمة ForceAuthN، من عنصر AuthnRequest لطلب SAML. صواب
{SAML:ProviderName} قيمة السمة ProviderName، من عنصر AuthnRequest لطلب SAML. Contoso.com
{SAML:RelayState} معلمة سلسلة الاستعلام RelayState.
{SAML:Subject} Subject من عنصر NameId لطلب مصادقة SAML.
{SAML:Binding} قيمة السمة ProtocolBinding، من عنصر AuthnRequest لطلب SAML. urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

تحقق من العرض التوضيحي المباشر لمحللي مطالبات SAML.

موفر هوية OAuth2

يسرد الجدول التالي أدوات حل مطالبات موفر هوية OAuth2:

المطلب ‏‏الوصف مثال
{oauth2:access_token} رمز الوصول المميز لموفر الهوية OAuth2 السمة access_token. eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...
{oauth2:token_type} نوع رمز الوصول المميز. السمة token_type. حامل
{oauth2:expires_in} مدة صلاحية الرمز المميز للوصول بالثواني. السمة expires_in. مطالبة الإخراج DataType يجب أن تكون int أو long. 960000
{oauth2:refresh_token} رمز التحديث المميز لموفر هوية OAuth2. السمة refresh_token. eyJraWQiOiJacW9pQlp2TW5pYVc2MUY...

لاستخدام محللي مطالبة موفر الهوية OAuth2، قم بتعيين سمة مطالبة الإخراج PartnerClaimType إلى محلل المطالبة. يوضح المثال التالي كيفية الحصول على مطالبات موفر الهوية الخارجية:

<ClaimsProvider>
  <DisplayName>Contoso</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Contoso-OAUTH">
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessTokenType" PartnerClaimType="{oauth2:token_type}" />
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessTokenExpiresIn" PartnerClaimType="{oauth2:expires_in}" />
        <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
      </OutputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

استخدام أدوات حل المطالبات

يمكنك استخدام أدوات حل المطالبات مع العناصر التالية:

عنصر العنصر إعدادات
ملف تعريف تقني عن Application Insights InputClaim
ملف تعريف Microsoft Entra التقني InputClaim, OutputClaim 1، 2
ملف التعريف الفني لـ OAuth2 InputClaim, OutputClaim 1، 2
ملف التعريف التقني OpenID Connect InputClaim, OutputClaim 1، 2
الملف الفني تحويل المطالبات InputClaim, OutputClaim 1، 2
ملف التعريف التقني RESTful Provider InputClaim 1، 2
ملف التعريف التقني لموفر هوية SAML OutputClaim 1، 2
ملف التعريف الفني المؤكّد ذاتياً InputClaim, OutputClaim 1، 2
ContentDefinition LoadUri
ContentDefinitionParameters Parameter
ملف التعريف التقني RelyingParty OutputClaim 2

الإعدادات:

  1. يجب تعيين بيانات التعريف IncludeClaimResolvingInClaimsHandling على true.
  2. يجب تعيين سمة مطالبات الإدخال أو الإخراج AlwaysUseDefaultValue على true.

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

لمحة فنية مريحة

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

يوضح المثال التالي ملف تعريف تقني RESTful مع هذا السيناريو:

<TechnicalProfile Id="REST">
  <DisplayName>Validate user input data and return loyaltyNumber claim</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://your-app.azurewebsites.net/api/identity</Item>
    <Item Key="AuthenticationType">None</Item>
    <Item Key="SendClaimsIn">Body</Item>
    <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userLanguage" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="policyName" DefaultValue="{Policy:PolicyId}" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="{OIDC:Scope}" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="clientId" DefaultValue="{OIDC:ClientId}" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

تسجيل الدخول المباشر

باستخدام أدوات حل المطالبات، يمكنك ملء اسم تسجيل الدخول مسبقاً أو تسجيل الدخول المباشر إلى موفر هوية اجتماعية محدد، مثل Facebook أو LinkedIn أو حساب Microsoft. للمزيد من المعلومات، راجع إعداد تسجيل الدخول المباشر باستخدام Azure Active Directory B2C.

التخصيص الديناميكي لواجهة المستخدم

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

المثال التالي يمر في معلمة سلسلة طلب البحث المسماة campaignId بقيمة Hawaii ورمز اللغةen-US و التطبيق الذي يمثل العميل هوية شخصية:

<UserJourneyBehaviors>
  <ContentDefinitionParameters>
    <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
    <Parameter Name="language">{Culture:RFC5646}</Parameter>
    <Parameter Name="app">{OIDC:ClientId}</Parameter>
  </ContentDefinitionParameters>
</UserJourneyBehaviors>

نتيجة لذلك، يرسل Microsoft Azure Active Directory B2C المعلمات أعلاه إلى صفحة محتوى HTML:

/selfAsserted.aspx?campaignId=hawaii&language=en-US&app=0239a9cc-309c-4d41-87f1-31288feb2e82

تعريف المحتوى

في ContentDefinitionLoadUri، يمكنك إرسال أدوات حل المطالبات لسحب المحتوى من أماكن مختلفة، بناءً على المعلمات المستخدمة.

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>https://contoso.blob.core.windows.net/{Culture:LanguageName}/myHTML/unified.html</LoadUri>
  ...
</ContentDefinition>

ملف تعريف تقني عن Application Insights

باستخدام Azure Application Insights ومحللات المطالبات، يمكنك الحصول على رؤى حول سلوك المستخدم. في ملف التعريف الفني Application Insights، يمكنك إرسال مطالبات الإدخال التي تستمر إلى Azure Application Insights. لمزيد من المعلومات، راجع تتبع سلوك المستخدم في رحلاتM icrosoft Azure Active Directory B2C باستخدام Application Insights. يرسل المثال التالي معرف النهج ومعرف الارتباط واللغة ومعرف العميل إلى Azure Application Insights.

<TechnicalProfile Id="AzureInsights-Common">
  <DisplayName>Alternate Email</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.Insights.AzureApplicationInsightsProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="PolicyId" PartnerClaimType="{property:Policy}" DefaultValue="{Policy:PolicyId}" />
    <InputClaim ClaimTypeReferenceId="CorrelationId" PartnerClaimType="{property:CorrelationId}" DefaultValue="{Context:CorrelationId}" />
    <InputClaim ClaimTypeReferenceId="language" PartnerClaimType="{property:language}" DefaultValue="{Culture:RFC5646}" />
    <InputClaim ClaimTypeReferenceId="AppId" PartnerClaimType="{property:App}" DefaultValue="{OIDC:ClientId}" />
  </InputClaims>
</TechnicalProfile>

نهج جهة الاعتماد

في ملف التعريف الفني لنهج الطرف المعتمد، قد ترغب في إرسال معرف المستأجر أو معرف الارتباط إلى تطبيق الطرف المعتمد داخل JWT.

<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" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
        <OutputClaim ClaimTypeReferenceId="correlationId" AlwaysUseDefaultValue="true" DefaultValue="{Context:CorrelationId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

الخطوات التالية