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

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

AssertDateTimeIsGreaterThan

يؤكد أن تاريخًا واحدًا أحدث من تاريخ ثاني. تحديد ما إذا كان rightOperand أكبر من leftOperand. إذا كان الجواب نعم، يظهر استثناء. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.

العنصر نوع مطالبة التحول نوع البيانات ملاحظات
إدخال المطالبة اليسار سلسلة نوع المطالبة الأولى التي يجب أن تكون بعد المطالبة الثانية.
إدخال المطالبة اليمين سلسلة نوع المطالبة الثانية، والتي يجب أن تكون أقدم من المطالبة الأولى.
إدخال المعلمة AssertIfEqualTo منطقي يحدد ما إذا كان يجب أن يؤدي هذا التأكيد إلى حدوث خطأ إذا كان المعامل الأيسر مساويًا للمعامل الأيمن. القيم المحتملة:⁧true⁩(افتراضي)أو⁧false⁩.
إدخال المعلمة AssertIfRightOperandIsNotPresent منطقي يحدد ما إذا كان يجب أن يمر هذا التأكيد إذا كان المعامل الأيمن مفقودًا.
إدخال المعلمة TreatAsEqualIfWithinMillseconds int يصف عدد المللي ثانية المسموح به بين الوقتين والتاريخين لمراعاة الأوقات المتساوية (على سبيل المثال: لحساب انحراف الساعة).

يتم دائمًا تنفيذ تحويل المطالبات ⁧⁩AssertDateTimeIsGreaterThan⁧⁩ من ⁧⁩ملف تعريف فني⁧⁩للتحقق من الصحة يتم استدعاؤه بواسطة ⁧⁩ملف تعريف فني مؤكد ذاتيًا⁧⁩. تتحكم ⁧⁩DateTimeGreaterThan⁧⁩ في بيانات التعريف للملف التعريفي الفني المؤكدة ذاتيًا في رسالة الخطأ التي يقدمها ملف التعريف الفني للمستخدم. يمكن أن تكون رسائل الخطأ⁧⁩محلية⁧⁩.

توضح الرسومات التخطيطية كيفية استخدام تحويل مطالبات AssertStringClaimsAreEqual.

مثال على AssertDateTimeIsGreaterThan

ويقارن المثال التالي المطالبة⁧currentDateTime⁩بالمطالبة⁧approvedDateTime⁩. حدث خطأ إذا كان ⁧currentDateTime⁩متأخرًا عن⁧approvedDateTime⁩. يعامل التحويل القيم على أنها متساوية إذا كانت في غضون فرق 5 دقائق (30000 مللي ثانية). لن يؤدي ذلك إلى حدوث خطأ إذا كانت القيم متساوية نظرًا لتعيين⁧AssertIfEqualTo⁩ على⁧false⁩.

<ClaimsTransformation Id="AssertApprovedDateTimeLaterThanCurrentDateTime" TransformationMethod="AssertDateTimeIsGreaterThan">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="approvedDateTime" TransformationClaimType="leftOperand" />
    <InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="rightOperand" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="AssertIfEqualTo" DataType="boolean" Value="false" />
    <InputParameter Id="AssertIfRightOperandIsNotPresent" DataType="boolean" Value="true" />
    <InputParameter Id="TreatAsEqualIfWithinMillseconds" DataType="int" Value="300000" />
  </InputParameters>
</ClaimsTransformation>

ملاحظة

في المثال أعلاه، إذا قمت بإزالة ⁧AssertIfEqualTo⁩معلمة الإدخال، و⁧currentDateTime⁩ يساوي⁧approvedDateTime⁩، فسيتم طرح الخطأ. ⁧AssertIfEqualTo⁩القيمة الافتراضية هي⁧true⁩.

  • مطالبات الإدخال:
    • اليسار: 2022-01-01T15:00:00
    • اليمين: 2022-01-22T15:00:00
  • معلمات الإدخال:
    • AssertIfEqualTo: خطأ
    • AssertIfRightOperandIsNotPresent: صواب
    • TreatAsEqualIfWithinMillseconds: 300000 (30 ثانية)
  • النتيجة: تم طرح الخطأ

استدعاء تحويل المطالبات

يستدعي ملف التعريف التقني Example-AssertDates للتحقق من الصحة تحويل المطالبات AssertApprovedDateTimeLaterThanCurrentDateTime.

<TechnicalProfile Id="Example-AssertDates">
  <DisplayName>Unit test</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="ComparisonResult" DefaultValue="false" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertDates" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

يستدعي ملف التعريف التقني ذو التأكيد الذاتي ملف التعريف التقني Example-AssertDates للتحقق من الصحة.

<TechnicalProfile Id="SelfAsserted-AssertDateTimeIsGreaterThan">
  <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="ContentDefinitionReferenceId">api.selfasserted</Item>
    <Item Key="DateTimeGreaterThan">Custom error message if the provided right operand is greater than the right operand.</Item>
  </Metadata>
  ...
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="ClaimsTransformation-AssertDateTimeIsGreaterThan" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

ConvertDateTimeToDateClaim

تحويل نوع المطالبة DateTime إلى نوع مطالبة Date. سيزيل تحويل المطالبات تنسيق الوقت من التاريخ. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.

العنصر نوع مطالبة التحول نوع البيانات ملاحظات
InputClaim إدخال المطالبة dateTime نوع المطالبة المراد تحويلها.
OutputClaim الإخراج التاريخ وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا.

مثال على ConvertDateTimeToDateClaim

يوضح المثال التالي تحويل المطالبة ⁧systemDateTime⁩ (نوع بيانات التاريخ) إلى مطالبة أخرى⁧systemDate⁩ (نوع بيانات التاريخ).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • مطالبات الإدخال:
    • مطالبة إدخال: 2022-01-03T11:34:22.0000000Z
  • مطالبات الناتج:
    • مطالبة ناتج: 2022-01-03

ConvertDateToDateTimeClaim

تحويل نوع المطالبة Date إلى نوع مطالبة DateTime. تقوم عملية تحويل المطالبات بتغيير تنسيق الوقت وإضافة 12:00:00 صباحًا إلى التاريخ. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.

العنصر نوع مطالبة التحول نوع البيانات ملاحظات
InputClaim إدخال المطالبة التاريخ نوع المطالبة المراد تحويلها.
OutputClaim الإخراج dateTime وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا.

مثال على ConvertDateToDateTimeClaim

يبين المثال التالي تحويل المطالبة ⁧dateOfBirth⁩ (نوع بيانات التاريخ) إلى مطالبة أخرى⁧dateOfBirthWithTime⁩ (نوع بيانات التاريخ والوقت).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • مطالبات الإدخال:
    • مطالبة إدخال: 2022-01-03
  • مطالبات الناتج:
    • مطالبة ناتج: 2022-01-03T00:00:00.0000000Z

DateTimeComparison

يُقارن تاريخين ويُحدد ما إذا كان التاريخ الأول أحدث من التاريخ الآخر أو أقدم منه أو هو نفس التاريخ. النتيجة هي مطالبة منطقية جديدة بقيمة true أو false. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.

العنصر نوع مطالبة التحول نوع البيانات ملاحظات
إدخال المطالبة firstDateTime dateTime التاريخ الأول لمقارنة ما إذا كان أحدث من التاريخ الثاني أو أقدم منه أو هو نفس التاريخ. تطرح القيمة الخالية استثناء.
إدخال المطالبة التاريخ والوقت الثاني dateTime التاريخ الثاني للمقارنة. يُتعامل مع القيمة الخالية على أنها التاريخ والوقت الحاليين.
إدخال المعلمة timeSpanInSeconds int الفترة الزمنية للإضافة إلى التاريخ الأول. القيم المحتملة: تتراوح بين السالب -2,147,483,648 إلى الموجب 2,147,483,647.
InputParameter عامل التشغيل سلسلة إحدى القيم التالية: same أو later than، أو earlier than.
الإخراج النتيجة منطقي تم استدعاء المطالبة التي نتجت بعد تحويل المطالبات هذا.

مثال على DateTimeComparison

استخدم تحويل المطالبات هذا لتحديد ما إذا كان التاريخ الأول بالإضافة إلى معلمة timeSpanInSeconds أحدث من التاريخ الآخر أو أقدم منه أو هو نفس التاريخ. يوضح المثال التالي أن التاريخ الأول (2022-01-01T00:00:00) بالإضافة إلى 90 يومًا أحدث من التاريخ الثاني (2022-03-16T00:00:00).

<ClaimsTransformation Id="CompareLastTOSAcceptedWithCurrentDateTime" TransformationMethod="DateTimeComparison">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_LastTOSAccepted" TransformationClaimType="secondDateTime" />
    <InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="firstDateTime" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="operator" DataType="string" Value="later than" />
    <InputParameter Id="timeSpanInSeconds" DataType="int" Value="7776000" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isLastTOSAcceptedGreaterThanNow" TransformationClaimType="result" />
  </OutputClaims>
</ClaimsTransformation>
  • مطالبات الإدخال:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • معلمات الإدخال:
    • ⁩عامل التشغيل⁧⁩: فيما بعد
    • ⁩الفترة الزمنية الثانية⁧⁩:7776000 (90يوم)
  • مطالبات الناتج:
    • ⁩النتيجة⁧⁩: صحيحة

هل الموافقة على شروط الاستخدام مطلوبة

تحديد ما إذا كان نوع المطالبة dateTime أقدم من تاريخ محدد أو أكبر منه. النتيجة هي مطالبة منطقية جديدة بقيمة true أو false. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.

Item نوع مطالبة التحول نوع البيانات ملاحظات
InputClaim termsOfUseConsentDateTime dateTime نوع المطالبة dateTime للتحقق ما إذا كانت أقدم من معلمة الإدخال termsOfUseTextUpdateDateTime أو أحدث منها. تُرجع قيمة غير معرفة النتيجة true.
InputParameter termsOfUseTextUpdateDateTime dateTime نوع المطالبة dateTime للتحقق ما إذا كانت أقدم من مطالبة الإدخال termsOfUseConsentDateTime أو أحدث منها. الجزء الزمني من التاريخ اختياري.
الإخراج النتيجة منطقي تم استدعاء نوع المطالبة التي نتجت بعد تحويل المطالبات هذا.

استخدم تحويل المطالبات هذا لتحديد ما إذا كان نوع المطالبة dateTime أقدم من تاريخ محدد أو أكبر منه. على سبيل المثال، تحقق ما إذا كان المستخدم قد وافق على أحدث إصدار من شروط الاستخدام (TOU) أو شروط الخدمة. للتحقق من آخر مرة وافق فيها مستخدم، خزّن آخر مرة قبِل فيها المستخدم شروط الاستخدام في سمة ملحق. عند تغيير صياغة شروط الاستخدام، حدّث معلمة الإدخال termsOfUseTextUpdateDateTime مع وقت التغيير. ثم، استدعِ تحويل المطالبات هذا لمقارنة التواريخ. إذا أرجع تحويل المطالبات true، تكون القيمة termsOfUseConsentDateTime أقدم من القيمة termsOfUseTextUpdateDateTime، ويمكنك أن تطلب من المستخدم قبول شروط الاستخدام المُحدثة.

<ClaimsTransformation Id="IsTermsOfUseConsentRequired" TransformationMethod="IsTermsOfUseConsentRequired">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="termsOfUseConsentDateTime" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="termsOfUseTextUpdateDateTime" DataType="dateTime" Value="2021-11-15T00:00:00" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="result" />
  </OutputClaims>
</ClaimsTransformation>

مثل على هل الموافقة على شروط الاستخدام مطلوبة

  • مطالبات الإدخال:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • معلمات الإدخال:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • مطالبات الناتج:
    • ⁩النتيجة⁧⁩: صحيحة

GetCurrentDateTime

احصل على التوقيت العالمي المتفق عليه والتاريخ الحاليين، وأضف القيمة إلى نوع المطالبة. تحقق من العرض التوضيحي المباشر لتحول هذه المطالبات.

العنصر نوع مطالبة التحول نوع البيانات ملاحظات
الإخراج currentDateTime dateTime وقد تم استدعاء نوع المطالبة الذي يتم إنتاجه بعد تحويل المطالبات هذا.

مثال على GetCurrentDateTime

يوضح المثال التالي كيفية الحصول على التاريخ والوقت الحاليين:

<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>
  • مطالبات الناتج:
    • currentDateTime: 2022-01-14T11:40:35.0000000Z

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

  • يمكنك العثور على المزيد من أمثلة تحويل المطالبات في مستودع GitHub لمجتمع متاجرة عمل-مستهلك في Microsoft Azure Active Directory