Bagikan melalui


Transformasi klaim tanggal

Penting

Berlaku mulai 1 Mei 2025, Azure AD B2C tidak akan lagi tersedia untuk dibeli untuk pelanggan baru. Pelajari lebih lanjut di FAQ kami.

Artikel ini menyediakan contoh untuk menggunakan transformasi klaim tanggal dari skema Kerangka Kerja Pengalaman Identitas di Azure Active Directory B2C (Azure AD B2C). Untuk informasi selengkapnya, lihat transformasi klaim.

AssertDateTimeIsGreaterThan

Menegaskan bahwa satu tanggal lebih lambat dari tanggal kedua. Menentukan apakah rightOperand lebih besar dari leftOperand. Jika ya, melemparkan pengecualian. Lihat demo Langsung dari transformasi klaim ini.

Elemen TransformationClaimType Jenis Data Catatan
Klaim Masukan kiriOperan benang Jenis klaim pertama, yang harus lebih lambat dari klaim kedua.
Klaim Masukan Operan kanan benang Jenis klaim kedua, yang harus lebih awal dari klaim pertama.
Parameter Masukan AssertIfEqualTo Boolean Menentukan apakah pernyataan ini harus melemparkan kesalahan jika operand kiri sama dengan operand kanan. Nilai yang mungkin: true (default), atau false.
Parameter Masukan AssertIfRightOperandIsNotPresent Boolean Menentukan apakah pernyataan ini harus diteruskan jika operand kanan hilang.
Parameter Masukan TreatAsEqualIfWithinMillseconds int (integer) Menentukan jumlah milidetik untuk memungkinkan antara dua waktu tanggal untuk mempertimbangkan waktu yang sama (misalnya, untuk memperhitungkan kecondongan jam).

Transformasi klaim AssertDateTimeIsGreaterThan selalu dijalankan dari profil teknis validasi yang dipanggil oleh profil teknis yang dinyatakan sendiri. Metadata profil teknis yang ditegaskan sendiri DateTimeGreaterThan mengontrol pesan kesalahan yang disajikan profil teknis kepada pengguna. Pesan kesalahan dapat dilokalisasi.

Diagram menunjukkan cara menggunakan transformasi klaim AssertStringClaimsAreEqual.

Contoh AssertDateTimeIsGreaterThan

Contoh berikut membandingkan currentDateTime klaim dengan approvedDateTime klaim. Kesalahan dilemparkan jika currentDateTime lebih lambat dari approvedDateTime. Transformasi memperlakukan nilai sebagai sama jika berada dalam selisih 5 menit (30000 milidetik). Ini tidak akan melemparkan kesalahan jika nilainya sama karena AssertIfEqualTo diatur ke 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>

Nota

Dalam contoh di atas, jika Anda menghapus AssertIfEqualTo parameter input, dan currentDateTime sama denganapprovedDateTime, kesalahan akan dilemparkan. Nilai AssertIfEqualTo defaultnya adalah true.

  • Klaim input:
    • kiriOperand: 2022-01-01T15:00:00
    • Operan kanan: 2022-01-22T15:00:00
  • Parameter input:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000 (30 detik)
  • Hasil: Kesalahan diberikan

Memanggil transformasi klaim

Profil teknis validasi berikut Example-AssertDates memanggil AssertApprovedDateTimeLaterThanCurrentDateTime transformasi klaim.

<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>

Profil teknis yang dinyatakan sendiri memanggil profil teknis validasi 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>

Klaim KonversiTanggalWaktuKeTanggalKlaim

DateTime Mengonversi jenis klaim menjadi Date jenis klaim. Transformasi klaim menghapus format waktu dari tanggal. Lihat demo Langsung dari transformasi klaim ini.

Elemen TransformationClaimType Jenis Data Catatan
Klaim Masukan inputKlaim tanggalWaktu Jenis klaim yang akan dikonversi.
Klaim Keluaran outputKlaim tanggal Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil.

Contoh ConvertDateTimeToDateClaim

Contoh berikut menunjukkan konversi klaim systemDateTime (jenis data dateTime) ke klaim systemDate lain (jenis data tanggal).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Klaim input:
    • masukanKlaim: 2022-01-03T11:34:22.0000000Z
  • Klaim output:
    • outputKlaim: 2022-01-03

Klaim ConvertDateToDateTime

Date Mengonversi jenis klaim menjadi DateTime jenis klaim. Transformasi klaim mengonversi format waktu dan menambahkan 12:00:00 AM ke tanggal. Lihat demo Langsung dari transformasi klaim ini.

Elemen TransformationClaimType Jenis Data Catatan
Klaim Masukan inputKlaim tanggal Jenis klaim yang akan dikonversi.
Klaim Keluaran outputKlaim tanggalWaktu Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil.

Contoh ConvertDateToDateTimeClaim

Contoh berikut menunjukkan konversi klaim dateOfBirth (jenis data tanggal) ke klaim dateOfBirthWithTime lain (jenis data dateTime).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • Klaim input:
    • masukanKlaim: 2022-01-03
  • Klaim output:
    • outputClaim: 2022-01-03T00:00:00.00000000Z

Perbandingan DateTime

Membandingkan dua tanggal dan menentukan apakah tanggal pertama nanti, sebelumnya, atau sama dengan tanggal lainnya. Hasilnya adalah klaim Boolean baru dengan nilai true atau false. Lihat demo Langsung dari transformasi klaim ini.

Elemen TransformationClaimType Jenis Data Catatan
Klaim Masukan TanggalWaktu pertama tanggalWaktu Tanggal pertama untuk membandingkan apakah itu nanti, sebelumnya, atau sama dengan tanggal kedua. Nilai null memberikan pengecualian.
Klaim Masukan TanggalWaktu kedua tanggalWaktu Tanggal kedua untuk dibandingkan. Nilai null diperlakukan sebagai tanggal dan waktu saat ini.
Parameter Masukan waktuRentangDalam Detik int (integer) Rentang waktu untuk ditambahkan ke tanggal pertama. Nilai yang mungkin: berkisar antara negatif -2.147.483.648 hingga positif 2.147.483.647.
Parameter Masukan pengendali benang Salah satu nilai berikut: same, , later thanatau earlier than.
Klaim Keluaran hasil Boolean Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil.

Contoh DateTimeComparison

Gunakan transformasi klaim ini untuk menentukan apakah tanggal pertama ditambah timeSpanInSeconds parameternya nanti, sebelumnya, atau sama dengan yang lain. Contoh berikut menunjukkan bahwa tanggal pertama (2022-01-01T00:00:00) ditambah 90 hari lebih lambat dari tanggal kedua (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>
  • Klaim input:
    • TanggalWaktu pertama: 2022-01-01T00:00:00.100000Z
    • TanggalWaktu kedua: 2022-03-16T00:00:00.100000Z
  • Parameter input:
    • operator: lebih lambat dari
    • timeSpanInSeconds: 7776000 (90 hari)
  • Klaim output:
    • hasil: true

IsTermsOfUseConsentRequired

Tentukan apakah dateTime jenis klaim lebih lama atau lebih besar dari tanggal tertentu. Hasilnya adalah klaim Boolean baru dengan nilai true atau false. Lihat demo Langsung dari transformasi klaim ini.

Barang TransformationClaimType Jenis data Catatan
Klaim Masukan termsOfUseConsentDateTime tanggalWaktu Jenis dateTime klaim untuk memeriksa apakah itu lebih awal atau lebih baru dari termsOfUseTextUpdateDateTime parameter input. Nilai yang tidak ditentukan mengembalikan true hasil.
Parameter Masukan termsOfUseTextUpdateDateTime tanggalWaktu dateTime Jenis klaim untuk memeriksa apakah itu lebih awal atau lebih baru dari termsOfUseConsentDateTime klaim input. Bagian waktu dari tanggal bersifat opsional.
Klaim Keluaran hasil Boolean Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil.

Gunakan transformasi klaim ini untuk menentukan apakah dateTime jenis klaim lebih lama atau lebih besar dari tanggal tertentu. Misalnya, periksa apakah pengguna telah menyetujui versi terbaru ketentuan penggunaan (TOU) atau ketentuan layanan Anda. Untuk memeriksa terakhir kali pengguna menyetujui, simpan terakhir kali pengguna menerima TOU dalam atribut ekstensi. Saat kata-kata TOU Anda berubah, perbarui termsOfUseTextUpdateDateTime parameter input dengan waktu perubahan. Kemudian, panggil transformasi klaim ini untuk membandingkan tanggal. Jika transformasi klaim mengembalikan true, termsOfUseConsentDateTime nilainya lebih awal dari termsOfUseTextUpdateDateTime nilai , dan Anda dapat meminta pengguna untuk menerima TOU yang diperbarui.

<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>

Contoh IsTermsOfUseConsentRequired

  • Klaim input:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Parameter input:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • Klaim output:
    • hasil: true

AmbilTanggalWaktuTerkini

Dapatkan tanggal dan waktu UTC saat ini dan tambahkan nilai ke jenis klaim. Lihat demo Langsung dari transformasi klaim ini.

Elemen TransformationClaimType Jenis Data Catatan
Klaim Keluaran saat iniTanggalWaktu tanggalWaktu Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil.

Contoh GetCurrentDateTime

Contoh berikut menunjukkan cara mendapatkan data dan waktu saat ini:

<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>
  • Klaim output:
    • saat iniTanggalWaktu: 2022-01-14T11:40:35.0000000Z

Langkah selanjutnya