تحديد ملف تعريف تقني لتحويل المطالبات في نهج مخصص Azure Active Directory B2C

ملاحظة

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

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

البروتوكول

يجب تعيين سمة اسم عنصر البروتوكول على Proprietary. يجب أن تتضمن سمة المعالج اسم المؤهّل بالكامل لتجميع معالج البروتوكول الذي يستخدمه Azure AD B2C: Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

يُظهر المثال التالي ملف تعريف تقنياً لتحويل المطالبات:

<TechnicalProfile Id="Facebook-OAUTH-UnLink">
    <DisplayName>Unlink Facebook</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

مطالبات الإخراج

يُعد عنصر OutputClaims إلزامياً. قدّم مطالبة ناتج واحدة على الأقل أرجعها ملف التعريف التقني. يوضح المثال التالي كيفية تعيين القيم الافتراضية في مطالبات الإخراج:

<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="ageGroup" DefaultValue="Undefined" />
  <OutputClaim ClaimTypeReferenceId="ageGroupValueChanged" DefaultValue="false" />
</OutputClaims>

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

قد يحتوي عنصر OutputClaimsTransformations على مجموعة من عناصر OutputClaimsTransformation التي تُستخدم لتعديل المطالبات أو إنشاء مطالبات جديدة. يستدعي ملف التعريف التقني التالي تحويل مطالبات RemoveAlternativeSecurityIdByIdentityProvider. يُزيل تحويل المطالبات هذا هوية اجتماعية من مجموعة AlternativeSecurityIds. مطالبات الإخراج لملف التعريف التقني هذا هي identityProvider2، الذي يتم تعيينها على facebook.com، وAlternativeSecurityIds، الذي يحتوي على قائمة الهويات الاجتماعية المرتبطة بهذا المستخدم بعد إزالة هوية facebook.com.

<ClaimsTransformations>
  <ClaimsTransformation Id="RemoveAlternativeSecurityIdByIdentityProvider"
TransformationMethod="RemoveAlternativeSecurityIdByIdentityProvider">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="IdentityProvider2"
TransformationClaimType="identityProvider" />
      <InputClaim ClaimTypeReferenceId="AlternativeSecurityIds"
TransformationClaimType="collection" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="AlternativeSecurityIds"
TransformationClaimType="collection" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>
...
<TechnicalProfile Id="Facebook-OAUTH-UnLink">
    <DisplayName>Unlink Facebook</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="identityProvider2" DefaultValue="facebook.com" AlwaysUseDefaultValue="true" />
    </OutputClaims>
    <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="RemoveAlternativeSecurityIdByIdentityProvider" />
    </OutputClaimsTransformations>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

يتيح لك ملف التعريف التقني لتحويل المطالبات تنفيذ تحويل مطالبات من أي خطوة تنسيق للرحلة. في المثال التالي، تستدعي خطوة التنسيق أحد ملفات التعريف التقنية التي تم إلغاء ربطها مثل UnLink-Facebook-OAUTH. يستدعي ملف التعريف التقني هذا تحويل مطالبات الناتج RemoveAlternativeSecurityIdByIdentityProvider، الذي يُنشئ مطالبة AlternativeSecurityIds2 جديدة. تحتوي مطالبة الناتج على قائمة الهويات الاجتماعية للمستخدم، مع إزالة هوية Facebook من المجموعات.

<UserJourney Id="AccountUnLink">
  <OrchestrationSteps>
    ...
    <OrchestrationStep Order="8" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="UnLinkFacebookExchange" TechnicalProfileReferenceId="UnLink-Facebook-OAUTH" />
        <ClaimsExchange Id="UnLinkMicrosoftExchange" TechnicalProfileReferenceId="UnLink-Microsoft-OAUTH" />
        <ClaimsExchange Id="UnLinkGitHubExchange" TechnicalProfileReferenceId="UnLink-GitHub-OAUTH" />
      </ClaimsExchanges>
    </OrchestrationStep>
    ...
  </OrchestrationSteps>
</UserJourney>

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

السمة مطلوب الوصف
IncludeClaimResolvingInClaimsHandling لا بالنسبة لمطالبات الإدخال والإخراج، يتم تحديد إذا ما كان حل المطالبات مدرجاً في ملف التعريف الفني أم لا. القيم المحتملة: true، أو false (افتراضي). إذا أردت استخدام محلل المطالبات في الملف الشخصي التقني، فاضبط بيانات التعريف هذه على true.
ContentDefinitionReferenceId لا معرف تعريف المحتوى المقترن بهذا التشكيل الجانبي التقني. بيانات تعريف المحتوى مطلوبة لطلبات التحولات FormatLocalizedString، وGetLocalizedStringsTransformation، وGetMappedValueFromLocalizedCollection.

استخدام ملف تعريف تقني للتحقق من الصحة

يمكن استخدام ملف تعريف تقني لتحويل المطالبات للتحقق من صحة المعلومات. في المثال التالي، يطلب ملف التعريف التقني المؤكد ذاتياً المسمى باسم LocalAccountSignUpWithLogonEmail من المستخدم إدخال عنوان البريد الإلكتروني مرتين، ثم يستدعي ملف التعريف التقني للتحقق من الصحة التقنية المسمى باسم Validate-Email للتحقق من صحة عناوين البريد الإلكتروني. يستدعي ملف التعريف التقني Validate-Email تحويل المطالبات AssertEmailAreEqual لمقارنة المطالبتين عنوان البريد الإلكتروني وemailRepeat، والتخلص من استثناء إذا لم يكونا متساويتين وفقاً للمقارنة المحددة.

<ClaimsTransformations>
  <ClaimsTransformation Id="AssertEmailAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
      <InputClaim ClaimTypeReferenceId="emailRepeat" TransformationClaimType="inputClaim2" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    </InputParameters>
  </ClaimsTransformation>
</ClaimsTransformations>

يستدعي ملف التعريف التقني لتحويل المطالبات تحويل المطالبات AssertEmailAreEqual، الذي يؤكد أن عناوين البريد الإلكتروني المقدمة من قِبل المستخدم هي نفسها.

<TechnicalProfile Id="Validate-Email">
  <DisplayName>Unlink Facebook</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="emailRepeat" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertEmailAreEqual" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

يمكن لأحد ملفات التعريف التقنية المؤكدة ذاتياً استدعاء ملف التعريف التقني للتحقق من الصحة وإظهار رسالة الخطأ كما هو محدد في بيانات التعريف UserMessageIfClaimsTransformationStringsAreNotEqual.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>User ID signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    ...
    <Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">The email addresses you provided are not the same</Item>
  </Metadata>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" />
    <OutputClaim ClaimTypeReferenceId="emailRepeat" />
    ...
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="Validate-Email" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>