Menentukan profil teknis kata sandi satu kali dalam kebijakan kustom Azure AD B2C

Catatan

Di Azure Active Directory B2C, kebijakan kustom didesain khusus untuk menangani skenario kompleks. Untuk skenario umum, sebaiknya gunakan alur pengguna bawaan. Jika Anda belum melakukannya, pelajari tentang paket starter kebijakan kustom di Mulai dengan kebijakan kustom di Azure Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) menyediakan dukungan untuk mengelola pembuatan dan verifikasi kata sandi satu kali. Gunakan profil teknis untuk membuat kode, lalu verifikasi kode itu nanti.

Profil teknis kata sandi satu kali juga dapat mengembalikan pesan kesalahan selama verifikasi kode. Rancang integrasi dengan kata sandi satu kali dengan menggunakan Profil teknis validasi. Profil teknis validasi memanggil profil teknis kata sandi satu kali untuk memverifikasi kode. Profil teknis validasi memvalidasi data yang disediakan pengguna sebelum perjalanan berlanjut. Dengan profil teknis validasi, pesan kesalahan ditampilkan di halaman yang ditegaskan sendiri.

Protokol

Atribut Nama dari elemen Protokol perlu diatur ke Proprietary. Atribut handler harus berisi nama yang sepenuhnya memenuhi syarat dari rakitan handler protokol yang digunakan oleh Azure AD B2C:

Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Contoh berikut menunjukkan profil teknis kata sandi satu kali:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Validate user input verification code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

Membuat kode

Mode pertama dari profil teknis ini adalah membuat kode. Di bawah ini adalah opsi yang dapat dikonfigurasi untuk mode ini. Kode yang dibuat dan upaya dilacak dalam sesi.

Klaim input

Elemen InputClaims berisi daftar klaim yang diperlukan untuk dikirim ke penyedia protokol kata sandi satu kali. Anda juga dapat memetakan nama klaim Anda ke nama yang ditentukan di bawah ini.

ClaimReferenceId Diperlukan Deskripsi
pengidentifikasi Ya Pengidentifikasi untuk mengidentifikasi pengguna yang perlu memverifikasi kode nanti. Ini biasanya digunakan sebagai pengidentifikasi tujuan tempat kode dikirimkan, misalnya alamat email atau nomor telepon.

Elemen InputClaimsTransformations dapat berisi kumpulan elemen InputClaimsTransformation yang digunakan untuk mengubah klaim input atau membuat yang baru sebelum mengirim ke penyedia protokol kata sandi satu kali.

Klaim output

Elemen OutputClaims berisi daftar klaim yang dibuat oleh penyedia protokol kata sandi satu kali. Anda juga dapat memetakan nama klaim Anda ke nama yang ditentukan di bawah ini.

ClaimReferenceId Diperlukan Deskripsi
otpGenerated Ya Kode yang dihasilkan yang sesinya dikelola oleh Azure AD B2C.

Elemen OutputClaimsTransformations mungkin berisi kumpulan elemen OutputClaimsTransformation yang digunakan untuk memodifikasi klaim output atau menghasilkan yang baru.

Metadata

Pengaturan berikut dapat digunakan untuk mengonfigurasi mode pembuatan kode:

Atribut Diperlukan Deskripsi
Operasi Ya Operasi yang akan dilakukan. Nilai yang mungkin: GenerateCode.
CodeExpirationInSeconds Tidak Waktu dalam detik hingga kode kedaluwarsa. Minimum: 60; Maksimum: 1200; Default: 600. Setiap kali kode diberikan (kode yang sama menggunakan ReuseSameCode, atau kode baru), kedaluwarsa kode diperpanjang. Waktu ini juga digunakan untuk mengatur waktu tunggu coba lagi (setelah upaya maksimal tercapai, pengguna tidak dapat mencoba mendapatkan kode baru hingga waktu ini berakhir)
CodeLength Tidak Panjang kode. Nilai defaultnya adalah 6.
CharacterSet Tidak Tataan karakter untuk kode, diformat untuk digunakan dalam regex. Contohnya:a-z0-9A-Z Nilai defaultnya adalah 0-9. Tataan karakter harus menyertakan minimal 10 karakter berbeda dalam set yang ditentukan.
NumRetryAttempts Tidak Jumlah upaya verifikasi sebelum kode dianggap tidak valid. Nilai defaultnya adalah 5. Misalnya, jika Anda mengatur NumRetryAttempts ke 2, Anda hanya memiliki kesempatan untuk mencoba sebanyak 2 kali (pertama + 1 kali coba lagi). Upaya yang ke-3 akan membuang upaya maksimal yang dicapai terlepas dari apakah kodenya benar atau tidak.
NumCodeGenerationAttempts Tidak Jumlah upaya pembuatan kode maksimum per pengidentifikasi. Nilai defaultnya adalah 10 jika tidak ditentukan.
ReuseSameCode Tidak Apakah kode yang sama harus diberikan daripada membuat kode baru ketika kode yang diberikan belum kedaluwarsa dan masih valid. Nilai defaultnya adalah false.

Contoh

Contoh berikut TechnicalProfile digunakan untuk membuat kode:

<TechnicalProfile Id="GenerateCode">
  <DisplayName>Generate Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GenerateCode</Item>
    <Item Key="CodeExpirationInSeconds">600</Item>
    <Item Key="CodeLength">6</Item>
    <Item Key="CharacterSet">0-9</Item>
    <Item Key="NumRetryAttempts">5</Item>
    <Item Key="NumCodeGenerationAttempts">10</Item>
    <Item Key="ReuseSameCode">false</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpGenerated" />
  </OutputClaims>
</TechnicalProfile>

Verifikasi kode

Mode kedua dari profil teknis ini adalah memverifikasi kode. Di bawah ini adalah opsi yang dapat dikonfigurasi untuk mode ini.

Klaim input

Elemen InputClaims berisi daftar klaim yang diperlukan untuk dikirim ke penyedia protokol kata sandi satu kali. Anda juga dapat memetakan nama klaim Anda ke nama yang ditentukan di bawah ini.

ClaimReferenceId Diperlukan Deskripsi
pengidentifikasi Ya Pengidentifikasi untuk mengidentifikasi pengguna yang sebelumnya telah menghasilkan kode. Ini biasanya digunakan sebagai pengidentifikasi tujuan tempat kode dikirimkan, misalnya alamat email atau nomor telepon.
otpToVerify Ya Kode verifikasi yang disediakan oleh pengguna.

Elemen InputClaimsTransformations dapat berisi kumpulan elemen InputClaimsTransformation yang digunakan untuk mengubah klaim input atau membuat yang baru sebelum mengirim ke penyedia protokol kata sandi satu kali.

Klaim output

Tidak ada klaim output yang diberikan selama verifikasi kode penyedia protokol ini.

Elemen OutputClaimsTransformations mungkin berisi kumpulan elemen OutputClaimsTransformation yang digunakan untuk memodifikasi klaim output atau menghasilkan yang baru.

Metadata

Pengaturan berikut dapat digunakan untuk mode verifikasi kode:

Atribut Diperlukan Deskripsi
Operasi Ya Operasi yang akan dilakukan. Nilai yang mungkin: VerifyCode.

Elemen antarmuka pengguna

Metadata berikut dapat digunakan untuk mengkonfigurasi pesan kesalahan yang ditampilkan saat verifikasi kode gagal. Metadata harus dikonfigurasi dalam profil teknis yang self-asserted. Pesan kesalahan dapat dilokalkan.

Atribut Diperlukan Deskripsi
UserMessageIfSessionDoesNotExist Tidak Pesan untuk ditampilkan kepada pengguna jika sesi verifikasi kode telah kedaluwarsa. Ini adalah kode telah kedaluwarsa atau kode belum pernah dihasilkan untuk pengidentifikasi tertentu.
UserMessageIfMaxRetryAttempted Tidak Pesan yang akan ditampilkan kepada pengguna jika mereka telah melebihi upaya verifikasi maksimum yang diizinkan.
UserMessageIfMaxNumberOfCodeGenerated Tidak Pesan yang akan ditampilkan kepada pengguna jika pembuatan kode telah melebihi jumlah percobaan maksimum yang diizinkan.
UserMessageIfInvalidCode Tidak Pesan yang akan ditampilkan kepada pengguna jika mereka memberikan kode yang tidak valid.
UserMessageIfVerificationFailedRetryAllowed Tidak Pesan yang akan ditampilkan kepada pengguna jika mereka memberikan kode yang tidak valid, dan pengguna diizinkan untuk memberikan kode yang benar.
UserMessageIfSessionConflict Tidak Pesan yang akan ditampilkan kepada pengguna jika kode tidak dapat diverifikasi.

Contoh

Contoh berikut TechnicalProfile digunakan untuk memverifikasi kode:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Verify Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyCode</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
    <InputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpToVerify" />
  </InputClaims>
</TechnicalProfile>

Langkah berikutnya

Lihat artikel berikut untuk contoh penggunaan profil teknis kata sandi satu kali dengan verifikasi email kustom:

  • Verifikasi email kustom di Azure Active Directory B2C (Mailjet, SendGrid)