تحويلات مطالبات السلسلة
توفر هذه المقالة أمثلة لاستخدام سلسلة تحويلات المطالبات لمخطط إطار عمل تجربة الهوية في Microsoft Azure Active Directory B2C (Azure AD B2C). لمزيد من المعلومات، راجع تحويلات المطالبات.
تأكيد أن تكون المطالبات في السلسلة متكافئة (AssertStringClaimsAreEqual)
مقارنة مطالبتين، وطرح استثناء إذا لم يكونا متساويين وفقاً لإدخال المقارنة المحددة inputClaim1 وinputClaim2 وstringComparison.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | inputClaim1 | سلسلة | نوع المطالبة الأولى، الذي يجب مقارنته. |
مطالبة إدخال | inputClaim2 | سلسلة | نوع المطالبة الثانية، التي يجب مقارنتها. |
InputParameter | stringComparison | سلسلة | مقارنة السلسلة، واحدة من القيم: ترتيبي، OrdinalIgnoreCase. |
يتم تنفيذ تحويل مطالبات AssertStringClaimsAreEqual دائماً من ملف تعريف فني التحقق من الصحة الذي يسمى من قبل ملف تعريف فني ذاتي التأكيد، أو DisplayControl. بيانات التعريف UserMessageIfClaimsTransformationStringsAreNotEqual
لملف تعريف فني ذي تأكيد ذاتي والتي تتحكم برسالة الخطأ التي يتم تقديمها للمستخدم. يمكن ترجمة رسائل الخطأ
مثال على AssertStringClaimsAreEqual
يمكنك استخدام تحويل المطالبات هذا للتأكد من أن هناك مطالبتين لهما نفس القيمة. إذا لم يكن الأمر كذلك، فسيتم طرح رسالة خطأ. يتحقق المثال التالي من أن المطالبة strongAuthenticationEmailAddress تساوي المطالبة email. وإلا يتم طرح رسالة خطأ.
<ClaimsTransformation Id="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="strongAuthenticationEmailAddress" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
</InputParameters>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim1: someone@contoso.com
- inputClaim2: someone@outlook.com
- معلمات الإدخال:
- stringComparison: ordinalIgnoreCase
- النتيجة: تم طرح الخطأ
استدعاء تحويل مطالبات AssertStringClaimsAreEqual
يستدعي ملف التعريف التقني الخاص بالتحقق من صحة login-NonInteractiveتحويل مطالباتAssertEmailAndStrongAuthenticationEmailAddressAreEqual.
<TechnicalProfile Id="login-NonInteractive">
...
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" />
</OutputClaimsTransformations>
</TechnicalProfile>
يستدعي ملف التعريف التقني ذو التأكيد الذاتي ملف التعريف التقني لتسجيل الدخول غير التفاعلي للتحقق من الصحة.
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
<Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">Custom error message the email addresses you provided are not the same.</Item>
</Metadata>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
BuildUri
إنشاء وقت استنادًا إلى رابط URI لكلمات مرور تستخدم مرة واحدة ولفترة زمنية محدودة (TOTP). يعد معرف الموارد المنتظم (URI) هو مزيج من المعرّف الفريد للمستخدم، مثل عنوان البريد الإلكتروني، ومفتاح سري. يتم تحويل URI لاحقًا إلى رمز الاستجابة السريعة الذي يتم تقديمه للمستخدم. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | path | سلسلة | المعرّف الفريد للمستخدم، مثل عنوان البريد الإلكتروني أو اسم المستخدم أو رقم الهاتف. |
مطالبة إدخال | الاستعلام السري | سلسلة | المفتاح السري لكلمة مرور تستخدم مرة واحدة ولفترة زمنية محدودة TOTP. |
InputParameter | scheme | سلسلة | جزء المخطط من معرّف الموارد المنتظم URI. على سبيل المثال، otpauth |
InputParameter | مضيف | سلسلة | جزء المخطط من معرّف الموارد المنتظم URI. على سبيل المثال، totp |
InputParameter | مُصدر الاستعلام | سلسلة | الجزء المُصدر من URI. على سبيل المثال، {AuthenticatorIssuer} |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
مثال على BuildUri
يُنشئ تحويل المطالبات التالي رابط URI لكلمات مرور تستخدم مرة واحدة ولفترة زمنية محدودة (TOTP) والذي سيُعرض في شفرة الاستجابة السريعة أو في ارتباط داخلي.
<ClaimsTransformation Id="CreateUriString" TransformationMethod="BuildUri">
<InputClaims>
<InputClaim ClaimTypeReferenceId="uriLabel" TransformationClaimType="path" />
<InputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="query.secret" />
</InputClaims>
<InputParameters>
<InputParameter Id="scheme" DataType="string" Value="otpauth" />
<InputParameter Id="host" DataType="string" Value="totp" />
<InputParameter Id="query.issuer" DataType="string" Value="{AuthenticatorIssuer}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="qrCodeContent" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- مسار: emily@fabrikam.com
-
الاستعلام السري:
fay2lj7ynpntjgqa
- معلمات الإدخال:
-
مخطط:
otpauth
-
مضيف:
totp
-
مُصدر الاستعلام:
{AuthenticatorIssuer}
-
مخطط:
- مطالبات الإخراج:
-
outputClaim:
otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo
-
outputClaim:
ChangeCase
إن تغيير حالة الأحرف للمطالبة المقدمة إلى أحرف صغيرة أو أحرف كبيرة اعتمادًا على العامل. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | inputClaim1 | سلسلة | المطالبة التي ستتغير. |
InputParameter | toCase | سلسلة | إحدى القيم التالية: LOWER أو UPPER . |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
مثال على ChangeCase
يُغير تحويل المطالبة التالية مطالبة البريد الإلكتروني إلى حالة أقل.
<ClaimsTransformation Id="ChangeToLower" TransformationMethod="ChangeCase">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
</InputClaims>
<InputParameters>
<InputParameter Id="toCase" DataType="string" Value="LOWER" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- البريد الإلكتروني: SomeOne@contoso.com
- معلمات الإدخال:
- toCase: LOWER
- مطالبات الإخراج:
- البريد الإلكتروني: someone@contoso.com
CompareClaims
تحديد ما إذا كانت مطالبة سلسلة واحدة تساوي مطالبة أخرى. النتيجة هي مطالبة منطقية جديدة بقيمة true
أو false
. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | inputClaim1 | سلسلة | نوع المطالبة الأولى، التي يجب مقارنتها. |
مطالبة إدخال | inputClaim2 | سلسلة | نوع المطالبة الثاني، الذي ينبغي مقارنته. |
InputParameter | عامل التشغيل | سلسلة | القيم الممكنة: EQUAL أو NOT EQUAL . |
InputParameter | ignoreCase | سلسلة | قم بتحديد ما إذا كان ينبغي لهذه المقارنة تجاهل حالة أحرف السلاسل والتي تتم مقارنتها. |
OutputClaim | الإخراج | boolean | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
مثال على CompareClaims
استخدم تحويل المطالبات هذا للتحقق مما إذا كانت المطالبة مساوية لمطالبة أخرى. يتحقق تحويل المطالبات التالي ما إذا كانت قيمة مطالبة البريد الإلكتروني مساوية للمطالبة Verified.Email.
<ClaimsTransformation Id="CheckEmail" TransformationMethod="CompareClaims">
<InputClaims>
<InputClaim ClaimTypeReferenceId="Email" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="Verified.Email" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
<InputParameter Id="ignoreCase" DataType="string" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="SameEmailAddress" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim1: someone@contoso.com
- inputClaim2: someone@outlook.com
- معلمات الإدخال:
- عامل التشغيل: الخاص بـ NOT EQUAL
- ignoreCase: صحيح
- مطالبات الإخراج:
- outputClaim: صحيح
CompareClaimToValue
قم بتحديد ما إذا كانت قيمة المطالبة تساوي قيمة معلمة الإدخال. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | inputClaim1 | سلسلة | نوع المطالبة، والذي يجب مقارنته. |
InputParameter | عامل التشغيل | سلسلة | القيم الممكنة: EQUAL أو NOT EQUAL . |
InputParameter | compareTo | سلسلة | مقارنة السلسلة، إحدى القيم، أي السلسلة التي يجب مقارنة قيم مطالبة الإدخال بها: الترتيبي، OrdinalIgnoreCase. |
InputParameter | ignoreCase | سلسلة | قم بتحديد ما إذا كان ينبغي لهذه المقارنة تجاهل حالة أحرف السلاسل والتي تتم مقارنتها. |
OutputClaim | الإخراج | boolean | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
مثال على CompareClaimToValue
استخدم تحويل المطالبات هذا للتحقق ما إذا كانت المطالبة تساوي قيمة حددتها. على سبيل المثال، يتحقق تحويل المطالبات التالي ما إذا كانت قيمة مطالبة termsOfUseConsentVersion مساوية للمطالبة V2
.
<ClaimsTransformation Id="IsTermsOfUseConsentRequiredForVersion" TransformationMethod="CompareClaimToValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim1" />
</InputClaims>
<InputParameters>
<InputParameter Id="compareTo" DataType="string" Value="V2" />
<InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
<InputParameter Id="ignoreCase" DataType="string" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim1: v1
- معلمات الإدخال:
- compareTo: V2
- عامل التشغيل: الخاص بـ NOT EQUAL
- ignoreCase: صحيح
- مطالبات الإخراج:
- outputClaim: صحيح
CopyClaimIfPredicateMatch
نسخ قيمة المطالبة إلى مطالبة أخرى إذا تطابقت قيمة مطالبة الإدخال مع مطالبة الناتج المُقيمة. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | نوع المطالبة، الذي سيتم نسخه. |
OutputClaim | الإخراج | سلسلة | وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا. يتم التحقق من قيمة المطالبة بالإدخال مقابل المطالبة المُقيمة. |
مثال على CopyClaimIfPredicateMatch
يحاول المثال التالي نسخ قيمة المطالبة signInName إلى مطالبة phoneNumber. لن تُنسخ القيمة في هذا المثال. المطالبة signInName ليست بالتنسيق المتوقع، رقم الهاتف. للحصول على نموذج كامل، راجع رقم الهاتف أو أرسل بريد إلكترونيإلى سياسة الحزمة الأولية لتسجيل الدخول.
<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim: bob@contoso.com
- مطالبات الإخراج:
- outputClaim: لن يتم تغيير قيمة مطالبة الناتج عن قيمتها الأصلية.
مثال على CopyClaimIfPredicateMatch الذي يطابق التقييم
في هذا المثال، سينسخ تحويل المطالبات القيمة. المطالبة signInName بالتنسيق الصحيح، رقم الهاتف.
- مطالبات الإدخال:
- inputClaim: +11234567890
- مطالبات الإخراج:
- outputClaim: +11234567890
CreateOtpSecret
إنشاء مطالبة سلسلة TOTP. مُخرج تحويل المطالبات هذا هو البيانات السرية لـ TOTP التي يتم تخزينها في وقت لاحق في حساب المستخدم لدليل Azure النشط ومشاركتها مع التطبيق Microsoft Authenticator. يستخدم التطبيق المصدّق المفتاح لإنشاء رموز TOTP عندما يحتاج المستخدم إلى المرور عبر مصادقة متعددة العوامل (MFA). يستخدم النهج المفتاح للتحقق من رمز كلمة مرور تستخدم مرة واحدة ولفترة زمنية محدودة TOTP التي يقدمها المستخدم.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي أُنتجت بعد تحويل المطالبة هذا بالإضافة إلى رمز كلمات مرور تستخدم مرة واحدة ولفترة زمنية محدودة (TOTP) الذي تم إنشاؤه. |
مثال على CreateOtpSecret
يُنشئ تحويل المطالبات التالي سرًا لمصدّق كلمات مرور تستخدم مرة واحدة ولفترة زمنية محدودة (TOTP) متعدد العوامل.
<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإخراج:
-
outputClaim:
hmlcmd4ph6fph64c
-
outputClaim:
CreateRandomString
إنشاء سلسلة عشوائية باستخدام مُنشئ الأرقام العشوائي. إذا كان مُنشئ الأرقام العشوائي من النوع integer
، فقد يتم توفير معلمة بذرة وعدد أقصى اختياريًّا. تسمح معلمة تنسيق سلسلة اختيارية بأن يتم تنسيق الناتج حتى يتم استخدامه، تحدد معلمة base64 اختيارية ما إذا كان الناتج هو base64 المشفرة randomGeneratorType [guid, integer] outputClaim (String).
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
InputParameter | randomGeneratorType | سلسلة | تحديد القيمة العشوائية التي سيتم إنشاؤها GUID ، (معرف فريد عمومي ID) أو INTEGER (رقم). |
InputParameter | stringFormat | سلسلة | [اختياري] تنسيق القيمة العشوائية. |
InputParameter | قاعدة 64 | boolean | [اختياري] تحويل القيمة العشوائية إلى base64. إذا تم تطبيق تنسيق السلسلة، يتم ترميز القيمة بعد تنسيق السلسلة إلى base64. |
InputParameter | maximumNumber | العدد الصحيح | [اختياري] لـ INTEGER randomGeneratorType only. حدّد العدد الأقصى. |
InputParameter | seed | العدد الصحيح | [اختياري] لـ INTEGER randomGeneratorType only. حدد القيم الأولية للقيمة العشوائية. ملاحظة: تنتج القيمة الأولية نفسها نفس التسلسل من الأرقام العشوائية. |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبات التي ستُنتج بعد تحويل المطالبات هذا. القيمة العشوائية. |
مثال على CreateRandomString
المثال التالي بإنشاء معرف فريد عمومي ID. يتم استخدام تحويل المطالبات هذا لإنشاء UPN عشوائي (اسم مبدأ المستخدم).
<ClaimsTransformation Id="CreateRandomUPNUserName" TransformationMethod="CreateRandomString">
<InputParameters>
<InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- معلمات الإدخال:
- randomGeneratorType:GUID
- مطالبات الإخراج:
- outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc
مثال على CreateRandomString الذي يُنشئ قيمة رقمية
يقوم المثال التالي بإنشاء قيمة عشوائية عدد صحيح بين 0 و 1000. يتم تنسيق القيمة إلى OTP_{قيمة عشوائية}.
<ClaimsTransformation Id="SetRandomNumber" TransformationMethod="CreateRandomString">
<InputParameters>
<InputParameter Id="randomGeneratorType" DataType="string" Value="INTEGER" />
<InputParameter Id="maximumNumber" DataType="int" Value="1000" />
<InputParameter Id="stringFormat" DataType="string" Value="OTP_{0}" />
<InputParameter Id="base64" DataType="boolean" Value="false" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="randomNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- معلمات الإدخال:
- randomGeneratorType: INTEGER
- اmaximumNumber: 1000
- stringFormat: OTP_{0}
- base64: خطأ
- مطالبات الإخراج:
- outputClaim: OTP_853
CreateStringClaim
إنشاء مطالبة سلسلة من معلمة الإدخال المتوفرة في التحويل. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
InputParameter | قيمة | سلسلة | سيتم تعيين السلسلة. تدعم معلمة الإدخال هذه تعبيرات تحويل مطالبات السلسلة. |
OutputClaim | createdClaim | سلسلة | تم استدعاء المطالبة التي أُنتجت بعد تحويل المطالبات هذا، مع تحديد القيمة في معلمة الإدخال. |
مثال على CreateStringClaim
يُنشئ تحويل المطالبات التالي قيمة سلسلة مع شروط الخدمة.
<ClaimsTransformation Id="CreateTermsOfService" TransformationMethod="CreateStringClaim">
<InputParameters>
<InputParameter Id="value" DataType="string" Value="Contoso terms of service..." />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="TOS" TransformationClaimType="createdClaim" />
</OutputClaims>
</ClaimsTransformation>
- معلمة الإدخال:
- القيمة: شروط خدمة Contoso...
- مطالبات الإخراج:
- createdClaim: تحتوي مطالبة TOS على قيمة "شروط الخدمة Contoso...".
FormatLocalizedString
تنسيق مطالبات متعددة وفقًا لسلسلة التنسيق المترجمة المتوفرة. يستخدم هذا التحويل أسلوب String.Format
C#. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
InputClaims | سلسلة | مجموعة مطالبات الإدخال التي تعمل كتنسيق سلسلة {0}،{1}،{2} معلمات. | |
InputParameter | stringFormatId | سلسلة |
StringId سلسلة مترجمة. |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
إشعار
لا يوجد حد لعدد مطالبات الإدخال التي يمكنك تحديدها، ولكن الحد الأقصى لطول السلسلة المنسقة هو 4000.
لاستخدام تحويل مطالبات FormatLocalizedString:
- قم بتعريف سلسلة الترجمة، وربطها بملف تعريف شخصي فني مؤكد ذاتيًّا.
-
ElementType
يجب تعيين العنصر إلىLocalizedString
FormatLocalizedStringTransformationClaimType
. -
StringId
هو معرف فريد تقوم بتعريفه، واستخدامه لاحقًا في تحويل المطالبات.stringFormatId
- في تحويل المطالبات، حدد قائمة المطالبات التي سيتم تعيينها باستخدام السلسلة المترجمة. ثم قم بتعيين
stringFormatId
إلىStringId
عنصر السلسلة المترجمة. - في ملف تعريف فني مؤكد ذاتيًّا، أو ناتج التحكم في العرض أو تحويل مطالبات الناتج، قم بالإشارة إلى تحويل المطالبات.
مثال على FormatLocalizedString
ينشئ المثال التالي رسالة خطأ عندما يكون حساب بالفعل في الدليل. يعرف المثال السلاسل المترجمة للغة الإنجليزية (افتراضي) والإسبانية.
<Localization Enabled="true">
<SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
<SupportedLanguage>en</SupportedLanguage>
<SupportedLanguage>es</SupportedLanguage>
</SupportedLanguages>
<LocalizedResources Id="api.localaccountsignup.en">
<LocalizedStrings>
<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessage_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<LocalizedResources Id="api.localaccountsignup.es">
<LocalizedStrings>
<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessage_EmailExists">Este correo electrónico "{0}" ya es una cuenta de esta organización. Haga clic en Siguiente para iniciar sesión con esa cuenta.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
</Localization>
تحويل المطالبات بإنشاء رسالة استجابة استنادًا إلى السلسلة المترجمة. تحتوي الرسالة على عنوان البريد الإلكتروني للمستخدم المضمن في ResponseMessage_EmailExists اللدغة المترجمة.
<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessage_EmailExists" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim: sarah@contoso.com
- معلمات الإدخال:
- stringFormat: ResponseMessage_EmailExists
- مطالبات الإخراج:
- outputClaim: البريد الإلكتروني sarah@contoso.com ' 'هو بالفعل حساب في هذه المؤسسة. حدد التالي لتسجيل الدخول باستخدام هذا الحساب.
FormatStringClaim
تنسيق مطالبة وفقًا لسلسلة التنسيق المتوفرة. يستخدم هذا التحويل أسلوب String.Format
C#. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | تعمل المطالبة كمعلمة تنسيق سلسلة {0}. |
InputParameter | stringFormat | سلسلة | نموذج السلسلة، بما في ذلك{0} المعلمة. تدعم معلمة الإدخال هذه تعبيرات تحويل مطالبات السلسلة. |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
إشعار
الحد الأقصى لحجم تنسيق السلسلة المسموح به هو 4000.
مثال على FormatStringClaim
استخدم تحويل المطالبات هذا لتنسيق أي سلسلة بمعلمة {0} واحدة. يقوم المثال التالي بإنشاء userPrincipalName. موفّر كافة ملفات التعريف الفنية والتي توفر الهوية الاجتماعية، مثل Facebook-OAUTH
استدعاء CreateUserPrincipalName لإنشاء userPrincipalName.
<ClaimsTransformation Id="CreateUserPrincipalName" TransformationMethod="FormatStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat" DataType="string" Value="cpim_{0}@{RelyingPartyTenantId}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="userPrincipalName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim: 5164db16-3eee-4629-bfda-dcc3326790e9
- معلمات الإدخال:
- نموذج السلسلة: cpim_{0}@{RelyingPartyTenantId}
- مطالبات الإخراج:
- outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com
FormatStringMultipleClaims
تنسيق مطالبتين وفقًا لسلسلة التنسيق المتوفرة. يستخدم هذا التحويل أسلوب String.Format
C#. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | inputClaim1 | سلسلة | تعمل المطالبة كمعلمة تنسيق سلسلة {0}. |
مطالبة إدخال | inputClaim2 | سلسلة | تعمل المطالبة كمعلمة تنسيق سلسلة {1}. |
InputParameter | stringFormat | سلسلة | تنسيق السلسلة، بما في ذلك المعلمتان {0} و{1}. تدعم معلمة الإدخال هذه تعبيرات تحويل مطالبات السلسلة. |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. |
إشعار
الحد الأقصى لحجم تنسيق السلسلة المسموح به هو 4000.
مثال على FormatStringMultipleClaims
استخدم تحويل المطالبات هذا لتنسيق أي سلسلة بمعلمتين {0} و{1}. ينشئ المثال التالي displayName بالتنسيق المحدد:
<ClaimsTransformation Id="CreateDisplayNameFromFirstNameAndLastName" TransformationMethod="FormatStringMultipleClaims">
<InputClaims>
<InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="surName" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat" DataType="string" Value="{0} {1}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim1: Joe
- inputClaim2: Fernando
- معلمات الإدخال:
- نموذج السلسلة: {0}{1}
- مطالبات الإخراج:
- outputClaim: Joe Fernando
GetLocalizedStringsTransformation
نسخ السلاسل المترجمة إلى مطالبات. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
OutputClaim | اسم السلسلة المترجمة | سلسلة | قائمة أنواع المطالبات التي يتم إنتاجها بعد استدعاء هذا التحويل المطالبات. |
لاستخدام تحويل مطالبات GetLocalizedStringsTransformation:
تعريف سلسلة ترجمة لـ تعريف المحتوىخاصتك، مثل
api.selfasserted
.ElementType
يجب تعيين العنصر إلىLocalizedString
GetLocalizedStringsTransformationClaimType
.StringId
هو معرف فريد تقوم بتعريفه، واستخدامه لاحقًا في تحويل المطالبات.في تحويل المطالبات، حدد قائمة المطالبات التي سيتم تعيينها باستخدام السلسلة المترجمة.
ClaimTypeReferenceId
هو مرجع إلى مطالبة مُعرفة مُسبقاً في قسم ClaimsSchema في النهج.TransformationClaimType
هو اسم السلسلة المترجمة كما هو معرف فيStringId
لعنصرLocalizedString
.في تحويل مطالبات ملف تعريف فني ذاتي التأكيد، أو تحويل المطالبات، بادر بالإشارة إلى تحويل مطالباتك.
بادر بإقران ملف التعريف الفني بتعريف المحتوى، مثل
api.selfasserted
. يوضح المثال التالي كيفية إقران ملف تعريف فني بتعريف المحتوىapi.selfasserted
.<Metadata> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> </Metadata>
يوضح الرسم التخطيطي التالي كيفية تكوين تحويل المطالبات مع عناصر الترجمة:
مثال على GetLocalizedStringsTransformation
يبحث المثال التالي عن موضوع البريد الإلكتروني، جسم البريد الإلكتروني، ورسالة التعليمات البرمجية، وتوقيع البريد الإلكتروني، من سلاسل مترجمة. هذه المطالبات المستخدمة في وقت لاحق من قالب التحقق من البريد الإلكتروني المخصص.
قم بتعريف السلاسل المترجمة للغة الإنجليزية (افتراضي) والإسبانية.
<Localization Enabled="true">
<SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
<SupportedLanguage>en</SupportedLanguage>
<SupportedLanguage>es</SupportedLanguage>
</SupportedLanguages>
<LocalizedResources Id="api.localaccountsignup.en">
<LocalizedStrings>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<LocalizedResources Id="api.localaccountsignup.es">
<LocalizedStrings>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Código de verificación del correo electrónico de la cuenta de Contoso</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Gracias por comprobar la cuenta de </LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Su código es</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Atentamente</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
</Localization>
يحدد تحويل المطالبات قيمة موضوع نوع المطالبة بقيمة StringId
email_subject.
<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
<OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
<OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
<OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإخراج:
- الموضوع: رمز التحقق من البريد الإلكتروني لحساب Contoso
- رسالة: شكرا للتحقق من حسابك!
- codeIntro: رمز الخاص بك هو
- التوقيع: بصدق
GetMappedValueFromLocalizedCollection
تعيين عنصر من مجموعة قيود مطالبة الإدخال. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | mapFromClaim | سلسلة | المطالبة التي تحتوي على النص المطلوب البحث عنه في restrictionValueClaim مع مجموعة القيود. |
OutputClaim | restrictionValueClaim | سلسلة | المطالبة التي تحتوي على مجموعة القيود. وبعد أن يتم استدعاء تحويل المطالبات، تحتوي قيمة هذه المطالبة على قيمة الصنف المحدد. |
مثال على GetMappedValueFromLocalizedCollection
يبحث المثال التالي عن وصف رسالة الخطأ استنادًا إلى مفتاح الخطأ. تحتوي المطالبة responseMsg على مجموعة من رسائل الخطأ لتقديمها إلى المستخدم النهائي أو لإرسالها إلى الطرف المعتمد.
<ClaimType Id="responseMsg">
<DisplayName>Error message: </DisplayName>
<DataType>string</DataType>
<UserInputType>Paragraph</UserInputType>
<Restriction>
<Enumeration Text="B2C_V1_90001" Value="You cannot sign in because you are a minor" />
<Enumeration Text="B2C_V1_90002" Value="This action can only be performed by gold members" />
<Enumeration Text="B2C_V1_90003" Value="You have not been enabled for this operation" />
</Restriction>
</ClaimType>
يبحث تحويل المطالبات عن نص العنصر ويعيد قيمته. إذا تم ترجمة التقييد باستخدام <LocalizedCollection>
، يقوم تحويل المطالبات بإرجاع القيمة المترجمة.
<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
<InputClaims>
<InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- mapFromClaim: B2C_V1_90001
- مطالبات الإخراج:
- restrictionValueClaim: لا يمكنك تسجيل الدخول لأنك قاصر.
LookupValue
البحث عن قيمة مطالبة من قائمة القيم استنادًا إلى قيمة مطالبة أخرى. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | inputParameterId | سلسلة | المطالبة التي تحتوي على قيمة البحث |
InputParameter | سلسلة | مجموعة من inputParameters. | |
InputParameter | errorOnFailedLookup | boolean | التحكم في ما إذا كان يتم إرجاع خطأ عند عدم وجود بحث مطابق. |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبات التي ستُنتج بعد تحويل المطالبات هذا. قيمة المطابقة Id . |
مثال على LookupValue
يبحث المثال التالي عن اسم المجال في إحدى مجموعات inputParameters. يبحث تحويل المطالبات عن اسم المجال في المعرف ويعيد قيمته (معرف تطبيق ID).
<ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
</InputClaims>
<InputParameters>
<InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
<InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
<InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
<InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputParameterId: test.com
- معلمات الإدخال:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
- errorOnFailedLookup: خطأ
- مطالبات الإخراج:
- outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9
مثال على LookupValue مع خطأ
عند تعيين معلمة الإدخال errorOnFailedLookup
إلى true
، يتم تنفيذ تحويل مطالبات LookupValue دائمًا من ملف تعريف فني للتحقق من الصحة يسمى بملف تعريف فني مؤكد ذاتيًّا، أو DisplayConrtol. بيانات التعريف LookupNotFound
لملف تعريف فني ذي تأكيد ذاتي والتي تتحكم برسالة الخطأ التي يتم تقديمها للمستخدم.
يبحث المثال التالي عن اسم المجال في إحدى مجموعات inputParameters. يبحث تحويل المطالبات عن اسم المجال في المعرف ويعيد قيمته (معرف تطبيق ID) أو يرفع رسالة خطأ.
<ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
</InputClaims>
<InputParameters>
<InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
<InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
<InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
<InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputParameterId: live.com
- معلمات الإدخال:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
- errorOnFailedLookup: صحيح
- خطأ:
- لا توجد مطابقة لقيمة مطالبة الإدخال في قائمة معرفات معلمات الإدخال وerrorOnFailedLookup صحيحة.
NullClaim
تنظيف قيمة مطالبة معينة. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
OutputClaim | claim_to_null | سلسلة | يتم تعيين قيمة المطالبة إلى NULL. |
مثال على NullClaim
استخدم تحويل المطالبة هذا لإزالة البيانات غير الضرورية من حقيبة المطالبات الخاصة بالملكية بحيث يكون ملف تعريف الارتباط الخاص بالجلسة أصغر. يزيل المثال التالي قيمة نوع المطالبة TermsOfService
.
<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- outputClaim: مرحبًا بكم في التطبيق Contoso. عند المواصلة في تصفح واستخدام هذا الموقع، فإنك توافق على الامتثال والالتزام بالشروط والأحكام التالية...
- مطالبات الإخراج:
- outputClaim: NULL
ParseDomain
يحصل على جزء المجال من عنوان بريد إلكتروني. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | emailAddress | سلسلة | المطالبة التي تحتوي على عنوان البريد الإلكتروني. |
OutputClaim | المجال | سلسلة | تم استدعاء المطالبات التي ستُنتج بعد تحويل المطالبات هذا - المجال. |
مثال على ParseDomain
استخدم هذا التحويل المطالبات لتوزيع اسم المجال بعد @ رمز المستخدم. يوضح تحويل المطالبات التالي كيفية توزيع اسم النطاق من مطالبة بريد إلكتروني.
<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- emailAddress: joe@outlook.com
- مطالبات الإخراج:
- النطاق: outlook.com
SetClaimIfBooleansMatch
التحقق من أن المطالبة المنطقية هي true
، أو false
. إذا كان الجواب نعم، فسيقوم الناتج بتعيين مطالبات الإخراج مع القيمة الموجودة في معلمة الإدخال outputClaimIfMatched
. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | claimToMatch | سلسلة | نوع المطالبة، والذي سيتم التحقق منه. تطرح القيمة الخالية استثناءً. |
InputParameter | matchTo | سلسلة | سيتم مقارنة القيمة claimToMatch بمطالبة الإدخال. القيم الممكنة:، true أو false . |
InputParameter | outputClaimIfMatched | سلسلة | القيمة التي سيتم تعيينها إذا كانت مطالبة الإدخال مساوية matchTo لمعلمة الإدخال. |
OutputClaim | الإخراج | سلسلة | إذا كانت مطالبة الإدخال claimToMatch تساوي معلمة الإدخال matchTo ، فإن مطالبة الإخراج هذه تحتوي على قيمة معلمة الإدخال outputClaimIfMatched . |
مثال على SetClaimIfBooleansMatch
على سبيل المثال، يتحقق تحويل المطالبات التالي ما إذا كانت قيمة مطالبة hasPromotionCode مساوية للمطالبة true
. إذا كانت الإجابة بنعم، عندها قُم بإرجاع القيمة إلى رمز الترقية غير موجود.
<ClaimsTransformation Id="GeneratePromotionCodeError" TransformationMethod="SetClaimIfBooleansMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="hasPromotionCode" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="true" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="Promotion code not found." />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="promotionCode" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- claimToMatch: صحيح
- معلمات الإدخال:
- matchTo: صحيح
- outputClaimIfMatched: "لم يتم العثور على رمز الترقية."
- مطالبات الإخراج:
- outputClaim: "رمز الترقية غير موجود."
SetClaimsIfRegexMatch
فحص أن مطالبة سلسلةclaimToMatch
ومعلمة الإدخالmatchTo
متساويتان، ويحدد مطالبات الإخراج مع القيمة الموجودة فيoutputClaimIfMatched
معلمة الإدخال، جنبًا إلى جنب مع مقارنة المطالبة الناتجة، والتي سيتم تعيينها بصفتهاtrue
أوfalse
على أساس نتيجة المقارنة.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
إدخال المطالبة | claimToMatch | سلسلة | نوع المطالبة، الذي يجب مقارنته. |
InputParameter | matchTo | سلسلة | التعبير العادي لمطابقة. |
InputParameter | outputClaimIfMatched | سلسلة | سيتم تعيين القضية إذا كانت السلاسل متساوية القيمة. |
InputParameter | extractGroups | boolean | [اختياري] تحديد ما إذا كان يجب أن تقوم مطابقة Regex باستخراج قيم المجموعات. القيم المحتملة: true ، أو false (افتراضية). |
OutputClaim | الإخراج | سلسلة | إذا كان التعبير العادي مطابقًا، فإن مطالبة الإخراج هذه تحتوي على قيمة معلمة الإدخال outputClaimIfMatched . أو فارغة، إذا لم تتطابق. |
OutputClaim | regexCompareResultClaim | boolean | يطابق التعبير العادي نتيجة نوع المطالبة الناتج، والتي سيتم تعيينها كـ true أو false استنادًا إلى نتيجة المطابقة. |
OutputClaim | اسم المطالبة | سلسلة | إذا تم تعيين معلمة الإدخال extractGroups إلى صحيح، فقد تم استدعاء قائمة أنواع المطالبات التي يتم إنتاجها بعد تحويل المطالبات هذا. يجب أن يتطابق اسم المطالبة مع اسم مجموعة Regex. |
مثال على SetClaimsIfRegexMatch
التحقق مما إذا كان رقم الهاتف المتوفر صالحًا، استنادًا إلى نمط التعبير العادي لرقم الهاتف.
<ClaimsTransformation Id="SetIsPhoneRegex" TransformationMethod="SetClaimsIfRegexMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="phone" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="^[0-9]{4,16}$" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="iPhone" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
<OutputClaim ClaimTypeReferenceId="isPhoneBoolean" TransformationClaimType="regexCompareResultClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- claimToMatch: "64854114520"
- معلمات الإدخال:
- matchTo: "^[0-9]{4,16}$"
- outputClaimIfMatched: "الهاتف"
- مطالبات الإخراج:
- outputClaim: "iPhone"
- regexCompareResultClaim: صحيح
مثال على SetClaimsIfRegexMatch مع مجموعات استخراج
التحقق مما إذا كان عنوان البريد الإلكتروني المتوفر صالحًا، ثم إرجاع الاسم المستعار للبريد الإلكتروني. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات مع مجموعات الاستخراج.
<ClaimsTransformation Id="GetAliasFromEmail" TransformationMethod="SetClaimsIfRegexMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="(?<mailAlias>.*)@(.*)$" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="isEmail" />
<InputParameter Id="extractGroups" DataType="boolean" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
<OutputClaim ClaimTypeReferenceId="isEmailString" TransformationClaimType="regexCompareResultClaim" />
<OutputClaim ClaimTypeReferenceId="mailAlias" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- claimToMatch: "emily@contoso.com"
- معلمات الإدخال:
-
matchTo:
(?<mailAlias>.*)@(.*)$
- outputClaimIfMatched: "isEmail"
- extractGroups: صحيح
-
matchTo:
- مطالبات الإخراج:
- outputClaim: "isEmail"
- regexCompareResultClaim: صحيح
- mailAlias: emily
SetClaimsIfStringsAreEqual
فحص أن مطالبة سلسلة والمعلمة الخاصة بالإدخال matchTo
متساويتان، ويحدد مطالبات الإخراج مع القيمة الموجودة في معلمات الإدخال stringMatchMsg
وstringMatchMsgCode
، جنبًا إلى جنب مع مقارنة المطالبة الناتجة، والتي سيتم تعيينها بصفتها true
أو false
على أساس نتيجة المقارنة.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | نوع المطالبة، الذي يجب مقارنته. |
InputParameter | matchTo | سلسلة | السلسلة التي ستتم مقارنتها مع inputClaim . |
InputParameter | stringComparison | سلسلة | القيم الممكنة: Ordinal أو OrdinalIgnoreCase . |
InputParameter | stringMatchMsg | سلسلة | القيمة الأولى التي سيتم تعيينها إذا كانت السلاسل متساوية. |
InputParameter | stringMatchMsgCode | سلسلة | القيمة الثانية التي سيتم تعيينها إذا كانت السلاسل متساوية. |
OutputClaim | outputClaim1 | سلسلة | إذا كانت السلاسل مطابقة، فإن مطالبة الإخراج هذه تحتوي على قيمة stringMatchMsg معلمة الإدخال. |
OutputClaim | outputClaim2 | سلسلة | إذا كانت السلاسل مطابقة، فإن مطالبة الإخراج هذه تحتوي على قيمة stringMatchMsgCode معلمة الإدخال. |
OutputClaim | stringCompareResultClaim | boolean | إن نتيجة المقارنة الناتج لنوع المطالبة، والتي سيتم تعيينها كـ true أو false استنادًا إلى نتيجة المطابقة. |
مثال على SetClaimsIfStringsAreEqual
يمكنك استخدام تحويل المطالبات هذا للتحقق مما إذا كانت المطالبة تساوي القيمة التي حددتها. على سبيل المثال، يتحقق تحويل المطالبات التالي ما إذا كانت قيمة مطالبة termsOfUseConsentVersion مساوية للمطالبة v1
. إذا كانت الإجابة بنعم، قم بتغيير القيمة إلى v2
.
<ClaimsTransformation Id="CheckTheTOS" TransformationMethod="SetClaimsIfStringsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="v1" />
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
<InputParameter Id="stringMatchMsgCode" DataType="string" Value="B2C_V1_90005" />
<InputParameter Id="stringMatchMsg" DataType="string" Value="The TOS is upgraded to v2" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="outputClaim1" />
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeCode" TransformationClaimType="outputClaim2" />
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeResult" TransformationClaimType="stringCompareResultClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim:v1
- معلمات الإدخال:
- matchTo: V1
- stringComparison: ordinalIgnoreCase
- stringMatchMsgCode: B2C_V1_90005
- stringMatchMsg: تتم ترقية TOS إلى v2
- مطالبات الإخراج:
- outputClaim1: B2C_V1_90005
- outputClaim2: تتم ترقية TOS إلى v2
- stringCompareResultClaim: صحيح
SetClaimsIfStringsMatch
فحص أن مطالبة سلسلة ومعلمة الخاصة بالإدخالmatchTo
متساويتان، ويحدد مطالبات الإخراج مع القيمة الموجودة في معلمة الإدخال outputClaimIfMatched
، جنبًا إلى جنب مع مقارنة المطالبة الناتجة، والتي سيتم تعيينها بصفتهاtrue
أو false
على أساس نتيجة المقارنة.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | claimToMatch | سلسلة | نوع المطالبة، الذي يجب مقارنته. |
InputParameter | matchTo | سلسلة | السلسلة التي ستتم مقارنتها مع inputClaim. |
InputParameter | stringComparison | سلسلة | القيم الممكنة: Ordinal أو OrdinalIgnoreCase . |
InputParameter | outputClaimIfMatched | سلسلة | سيتم تعيين القضية إذا كانت السلاسل متساوية القيمة. |
OutputClaim | الإخراج | سلسلة | إذا كانت السلاسل مطابقة، فإن مطالبة الإخراج هذه تحتوي على قيمة outputClaimIfMatched معلمة الإدخال. أو خالٍ، إذا كانت السلاسل غير متطابقة. |
OutputClaim | stringCompareResultClaim | boolean | إن نتيجة المقارنة الناتج لنوع المطالبة، والتي سيتم تعيينها كـ true أو false استنادًا إلى نتيجة المطابقة. |
مثال على SetClaimsIfStringsMatch
على سبيل المثال، يتحقق تحويل المطالبات التالي ما إذا كانت قيمة مطالبة ageGroup مساوية للمطالبة Minor
. إذا كانت الإجابة بنعم، فإرجاع القيمة إلى B2C_V1_90001
.
<ClaimsTransformation Id="SetIsMinor" TransformationMethod="SetClaimsIfStringsMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="ageGroup" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="Minor" />
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="B2C_V1_90001" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isMinor" TransformationClaimType="outputClaim" />
<OutputClaim ClaimTypeReferenceId="isMinorResponseCode" TransformationClaimType="stringCompareResultClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- claimToMatch: قاصر
- معلمات الإدخال:
- matchTo :قاصر
- stringComparison: ordinalIgnoreCase
- outputClaimIfMatched: B2C_V1_90001
- مطالبات الإخراج:
- isMinorResponseCode: صحيح
- isMinor: B2C_V1_90001
StringContains
تحديد ما إذا كانت سلسلة فرعية محددة تحدث ضمن مطالبة الإدخال. النتيجة هي مطالبة منطقية جديدة بقيمة true
أو false
.
true
في حالة حدث المعلمة قيمة ضمن هذه السلسلة، وإلا،false
.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | نوع المطالبة، الذي سيتم البحث فيه. |
InputParameter | تحتوي على | سلسلة | القيمة للبحث. |
InputParameter | ignoreCase | سلسلة | قم بتحديد ما إذا كان يجب تجاهل حالة السلسلة التي تتم مقارنتها أم لا. |
OutputClaim | الإخراج | سلسلة | تم استدعاء المطالبة التي تُنتج بعد تحويل المطالبات هذا. مؤشر منطقي إذا حدثت السلسلة الفرعية ضمن مطالبة الإدخال. |
مثال على StringContains
استخدم تحويل المطالبات هذا للتحقق مما إذا كان نوع مطالبة سلسلة يحتوي على سلسلة فرعية. على سبيل المثال، تحقق ما إذا كان نوع المطالبة السلسلة roles
يحتوي على قيمة المسؤول.
<ClaimsTransformation Id="CheckIsAdmin" TransformationMethod="StringContains">
<InputClaims>
<InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim"/>
</InputClaims>
<InputParameters>
<InputParameter Id="contains" DataType="string" Value="admin"/>
<InputParameter Id="ignoreCase" DataType="string" Value="true"/>
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isAdmin" TransformationClaimType="outputClaim"/>
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim: "المسؤول، الموافق، محرر"
- معلمات الإدخال:
- يحتوي على: "المسؤول،"
- ignoreCase: صحيح
- مطالبات الإخراج:
- outputClaim: صحيح
StringSubstring
استخراج أجزاء من نوع المطالبة سلسلة، بدءًا من الحرف في الموضع المحدد، وإرجاع عدد محدد من الأحرف. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | نوع المطالبة الذي يحتوي على السلسلة. |
InputParameter | بداية الفهرس | العدد الصحيح | موضع حرف البداية المستندة إلى صفر سلسلة فرعية في هذا المثيل. |
InputParameter | طول | العدد الصحيح | عدد الأحرف في السلسلة الفرعية. |
OutputClaim | الإخراج | سلسلة | سلسلة مكافئة لسلسلة فرعية من الطول الذي يبدأ في startIndex في هذا المثيل أو فارغ إذا startIndex يساوي طول هذا المثيل والطول صفر. |
مثال StringSubstring
على سبيل المثال، احصل على بادئة البلد/المنطقة لرقم الهاتف.
<ClaimsTransformation Id="GetPhonePrefix" TransformationMethod="StringSubstring">
<InputClaims>
<InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="startIndex" DataType="int" Value="0" />
<InputParameter Id="length" DataType="int" Value="2" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phonePrefix" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim: "+1644114520"
- معلمات الإدخال:
- startIndex: 0
- طول: 2
- مطالبات الإخراج:
- outputClaim: "+1"
StringReplace
البحث في سلسلة نوع المطالبة لقيمة محددة، وإرجاع سلسلة نوع مطالبة جديدة يتم فيها استبدال كافة تواجدات سلسلة محددة في السلسلة الحالية بسلسلة محددة أخرى.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | نوع المطالبة الذي يحتوي على السلسلة. |
InputParameter | oldValue | سلسلة | السلسلة التي سيتم البحث فيها. |
InputParameter | newValue | سلسلة | السلسلة لاستبدال كافة التواجدات oldValue |
OutputClaim | الإخراج | boolean | سلسلة مكافئة للسلسلة الحالية باستثناء استبدال كافة مثيلات oldValue ب newValue. في حالة عدم العثور على oldValue في المثيل الحالي، يرجع الأسلوب المثيل الحالي دون تغيير. |
مثال على StringReplace
على سبيل المثال، تطبيع رقم هاتف، عن طريق إزالة الأحرف -
<ClaimsTransformation Id="NormalizePhoneNumber" TransformationMethod="StringReplace">
<InputClaims>
<InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="oldValue" DataType="string" Value="-" />
<InputParameter Id="newValue" DataType="string" Value="" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
- inputClaim: "+164-411-452-054"
- معلمات الإدخال:
- oldValue: "-"
- قيمة جديدة: ""
- مطالبات الإخراج:
- outputClaim: "+164411452054"
StringJoin
سلسلة عناصر نوع المطالبة مجموعة سلسلة محددة باستخدام الفاصل المحدد بين كل عنصر أو عضو.
تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | stringCollection | مجموعة تحتوي على سلاسل لسلسلة. |
InputParameter | المحدِّد | سلسلة | السلسلة التي ستستخدم كفاصل، مثل الفاصلة , . |
OutputClaim | الإخراج | سلسلة | سلسلة تتكون من أعضاء مجموعة السلسلة inputClaim ، محددة بواسطة معلمة الإدخال delimiter . |
مثال على StringJoin
يأخذ المثال التالي مجموعة سلسلة من أدوار المستخدم، ويحولها إلى سلسلة فاصلة محدد. يمكنك استخدام هذا الأسلوب لتخزين مجموعة سلاسل في حساب مستخدم Azure AD B2C. لاحقًا، عند قراءة الحساب من الدليل، استخدم StringSplit
لتحويل سلسلة فاصلة محدد العودة إلى مجموعة سلسلة.
<ClaimsTransformation Id="ConvertRolesStringCollectionToCommaDelimiterString" TransformationMethod="StringJoin">
<InputClaims>
<InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter DataType="string" Id="delimiter" Value="," />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="rolesCommaDelimiterConverted" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
-
inputClaim:
[ "Admin", "Author", "Reader" ]
-
inputClaim:
- معلمات الإدخال:
- المحدد: ","
- مطالبات الإخراج:
-
outputClaim:
"Admin,Author,Reader"
-
outputClaim:
StringSplit
قم بإرجاع صفيف سلسلة يحتوي على سلاسل فرعية في هذا المثيل المحدد بواسطة عناصر سلسلة محددة. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.
العنصر | نوع مطالبة التحول | نوع البيانات | ملاحظات |
---|---|---|---|
مطالبة إدخال | إدخال المطالبة | سلسلة | نوع مطالبة سلسلة يحتوي على السلاسل الفرعية لتقسيم. |
InputParameter | المحدِّد | سلسلة | السلسلة التي ستستخدم كفاصل، مثل الفاصلة , . |
OutputClaim | الإخراج | stringCollection | مجموعة سلسلة تحتوي عناصرها على سلاسل فرعية في هذه السلسلة محددة بواسطة معلمة الإدخال delimiter . |
إشعار
ستتم إزالة أي عناصر موجودة في OutputClaim
stringCollection.
مثال على StringSplit
يأخذ المثال التالي سلسلة فاصلة محدد أدوار المستخدم ثم تحويله إلى مجموعة سلسلة.
<ClaimsTransformation Id="ConvertRolesToStringCollection" TransformationMethod="StringSplit">
<InputClaims>
<InputClaim ClaimTypeReferenceId="rolesCommaDelimiter" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter DataType="string" Id="delimiter" Value="," />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="roles" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- مطالبات الإدخال:
-
inputClaim:
Admin,Author,Reader
-
inputClaim:
- معلمات الإدخال:
- المحدد: ","
- مطالبات الإخراج:
-
outputClaim:
[ "Admin", "Author", "Reader" ]
-
outputClaim:
تعبيرات تحويلات المطالبة السلسلية
توفر تعبيرات تحويل المطالبة في النهج المخصصة لـ Azure AD B2C معلومات سياق حول معرف المستأجر ID ومعرف ملف التعريف الفني ID.
Expression | الوصف | مثال |
---|---|---|
{TechnicalProfileId} |
اسم ملف التعريف الفني profileId. | Facebook-OAUTH |
{RelyingPartyTenantId} |
معرف المستأجر لنهج الطرف المعتمد. | مستأجرك على microsoft.com |
{TrustFrameworkTenantId} |
معرّف المستأجر لإطار عمل الثقة. | مستأجرك على microsoft.com |
الخطوات التالية
- يمكنك العثور على المزيد من أمثلة تحويل المطالبات في مستودع GitHub لمجتمع متاجرة عمل-مستهلك في Microsoft Azure Active Directory