ContentDefinitions

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.

Anda dapat menyesuaikan tampilan dan nuansa profil teknis yang ditegaskan sendiri. Azure Active Directory B2C (Azure AD B2C) menjalankan kode di browser pelanggan Anda dan menggunakan pendekatan modern yang disebut Cross-Origin Resource Sharing (CORS).

Untuk menyesuaikan antarmuka pengguna, Anda menentukan URL di elemen ContentDefinition dengan konten HTML yang dikustomisasi. Dalam profil teknis yang ditegaskan sendiri atau OrchestrationStep, Anda mengarahkan ke pengenal definisi konten tersebut. Definisi konten mungkin berisi elemen LocalizedResourcesReferences yang menentukan daftar sumber daya yang dilokalkan untuk dimuat. Azure AD B2C menggabungkan elemen antarmuka pengguna dengan konten HTML yang dimuat dari URL Anda lalu menampilkan halaman tersebut kepada pengguna.

Elemen ContentDefinitions berisi URL ke template HTML5 yang dapat digunakan dalam perjalanan pengguna. URI halaman HTML5 digunakan untuk langkah antarmuka pengguna tertentu. Misalnya, halaman masuk atau pendaftaran, reset kata sandi, atau kesalahan. Anda dapat memodifikasi tampilan dan nuansa dengan mengesampingkan LoadUri untuk file HTML5. Anda dapat membuat definisi konten baru sesuai dengan kebutuhan Anda. Elemen ini mungkin berisi referensi sumber daya yang di lokal, ke pengidentifikasi pelokalan yang ditentukan dalam elemen Pelokalan.

Contoh berikut menunjukkan pengidentifikasi definisi konten dan definisi sumber daya yang dilokalkan:

<ContentDefinition Id="api.localaccountsignup">
  <LoadUri>~/tenant/default/selfAsserted.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:1.1.0</DataUri>
  <Metadata>
    <Item Key="DisplayName">Local account sign up page</Item>
  </Metadata>
  <LocalizedResourcesReferences MergeBehavior="Prepend">
    <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.localaccountsignup.en" />
    <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.localaccountsignup.es" />
    ...

Metadata profil teknis yang menegaskan sendiri LocalAccountSignUpWithLogonEmail berisi pengenal definisi konten ContentDefinitionReferenceId yang disetel ke api.localaccountsignup

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email 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.localaccountsignup</Item>
    ...
  </Metadata>
  ...

ContentDefinition

Elemen ContentDefinition berisi atribut berikut:

Atribut Diperlukan Deskripsi
Id Ya Pengidentifikasi untuk definisi konten. Nilainya ditentukan di bagian ID definisi konten nanti di laman ini.

Elemen ContentDefinition berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
LoadUri 1:1 String yang berisi URL halaman HTML5 untuk definisi konten.
RecoveryUri 1:1 String yang berisi URL halaman HTML untuk menampilkan kesalahan yang berkaitan dengan definisi konten. Saat ini tidak digunakan, nilainya harus ~/common/default_page_error.html.
DataUri 1:1 String yang berisi URL relatif dari file HTML yang memberikan pengalaman pengguna untuk memanggil langkah tersebut.
Metadata 0:1 Kumpulan pasangan kunci/nilai yang berisi metadata yang digunakan oleh definisi konten.
LocalizedResourcesReferences 0:1 Kumpulan referensi sumber daya yang dilokalkan. Gunakan elemen ini untuk menyesuaikan pelokalan antarmuka pengguna dan atribut klaim.

LoadUri

Elemen LoadUri digunakan untuk menentukan URL halaman HTML5 untuk definisi konten. Paket pemula kebijakan kustom Active Directory B2C dilengkapi dengan definisi konten yang menggunakan halaman HTML Active Directory B2C. LoadUri dimulai dengan ~, yang merupakan jalur relatif ke penyewa Active Directory B2C Anda.

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>
  ...
</ContentDefinition>

Anda dapat menyesuaikan antarmuka pengguna dengan templat HTML. Saat menggunakan templat HTML, berikan URL absolut. Contoh berikut mengilustrasikan definisi konten dengan templat HTML:

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>https://your-storage-account.blob.core.windows.net/your-container/customize-ui.html</LoadUri>
  ...
</ContentDefinition>

DataUri

Elemen DataUri digunakan untuk menentukan pengidentifikasi halaman. Azure AD B2C menggunakan pengidentifikasi halaman untuk memuat dan memulai elemen antarmuka pengguna dan sisi klien JavaScript. Format nilainya adalah urn:com:microsoft:aad:b2c:elements:page-name:version. Tabel berikut ini mencantumkan pengidentifikasi halaman yang bisa Anda gunakan.

Pengidentifikasi halaman Deskripsi
globalexception Menampilkan halaman kesalahan ketika pengecualian atau kesalahan ditemui.
providerselection, idpselection Mencantumkan IdP yang bisa dipilih pengguna pada saat masuk.
unifiedssp Menampilkan formulir untuk masuk dengan akun lokal yang didasarkan pada alamat email atau nama pengguna. Nilai ini juga menyediakan tautan “fungsionalitas buat saya tetap masuk” dan “Lupa kata sandi Anda?”.
unifiedssd Menampilkan formulir untuk masuk dengan akun lokal yang didasarkan pada alamat email atau nama pengguna. Pengenal halaman ini sudah tidak digunakan lagi. Gunakan unifiedssp pengidentifikasi halaman saja.
multifactor Memverifikasi nomor telepon dengan menggunakan teks atau suara saat mendaftar atau masuk.
selfasserted Menampilkan formulir untuk mengumpulkan data dari pengguna. Misalnya, memungkinkan pengguna untuk membuat atau memperbarui profil mereka.

Memilih tata letak halaman

Anda dapat mengaktifkan kode sisi klien JavaScript dengan memasukkan contract antara elements dan jenis halaman. Contohnya:urn:com:microsoft:aad:b2c:elements:contract:page-name:version

Bagian versi dari DataUri yang menentukan paket konten yang berisi HTML, CSS, dan JavaScript untuk elemen antarmuka pengguna dalam kebijakan Anda. Jika Anda bermaksud mengaktifkan kode sisi klien JavaScript, elemen yang Anda dasari javascript Anda harus tidak dapat diubah. Jika dapat diubah, perubahan apa pun dapat menyebabkan perilaku tak terduga di halaman pengguna Anda. Untuk mencegah masalah ini, terapkan penggunaan tata letak halaman dan tentukan versi tata letak halaman. Dengan melakukannya akan memastikan bahwa semua definisi konten yang menjadi dasar JavaScript Anda tidak dapat diubah. Bahkan jika Anda tidak bermaksud untuk mengaktifkan JavaScript, Anda masih perlu menentukan versi tata letak halaman untuk halaman Anda.

Contoh berikut menunjukkan DataUri dari selfasserted versi 1.2.0:

<!-- 
<BuildingBlocks> 
  <ContentDefinitions>-->
    <ContentDefinition Id="api.localaccountpasswordreset">
      <LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
      <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.2.0</DataUri>
      <Metadata>
        <Item Key="DisplayName">Local account change password page</Item>
      </Metadata>
    </ContentDefinition>
  <!-- 
  </ContentDefinitions> 
</BuildingBlocks> -->

Migrasi ke tata letak halaman

Untuk melakukan migrasi dari nilai DataUri lama (tanpa kontrak halaman) ke versi tata letak halaman, tambahkan kata contract diikuti oleh versi halaman. Gunakan tabel berikut untuk melakukan migrasi dari nilai DataUri lama ke versi tata letak halaman.

Nilai DataUri lama Nilai DataUri baru
urn:com:microsoft:aad:b2c:elements:globalexception:1.0.0 urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1
urn:com:microsoft:aad:b2c:elements:globalexception:1.1.0 urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1
urn:com:microsoft:aad:b2c:elements:idpselection:1.0.0 urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1
urn:com:microsoft:aad:b2c:elements:selfasserted:1.0.0 urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7
urn:com:microsoft:aad:b2c:elements:selfasserted:1.1.0 urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7
urn:com:microsoft:aad:b2c:elements:unifiedssd:1.0.0 urn:com:microsoft:aad:b2c:elements:contract:unifiedssd:1.2.1
urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0 urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5
urn:com:microsoft:aad:b2c:elements:unifiedssp:1.1.0 urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5
urn:com:microsoft:aad:b2c:elements:multifactor:1.0.0 urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.5
urn:com:microsoft:aad:b2c:elements:multifactor:1.1.0 urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.5

Contoh berikut menunjukkan pengidentifikasi definisi konten dan DataUri terkait dengan versi halaman terbaru:

<!-- 
<BuildingBlocks> -->
  <ContentDefinitions>
    <ContentDefinition Id="api.error">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.idpselections">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.idpselections.signup">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.signuporsignin">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.7</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.selfasserted">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.selfasserted.profileupdate">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.localaccountsignup">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.localaccountpasswordreset">
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
    </ContentDefinition>
    <ContentDefinition Id="api.phonefactor">
      <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
      <DataUri>urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.5</DataUri>
    </ContentDefinition>
  </ContentDefinitions>
<!-- 
</BuildingBlocks> -->

Metadata

Elemen Metadata berisi elemen berikut:

Elemen Kemunculan Deskripsi
Item 0:n Metadata yang berkaitan dengan definisi konten.

Elemen Item dari elemen Metadata berisi atribut berikut:

Atribut Diperlukan Deskripsi
Kunci Ya Kunci metadata.

Kunci metadata

Definisi konten mendukung item metadata berikut:

Kunci Diperlukan Deskripsi
DisplayName Tidak String yang berisi nama definisi konten.

LocalizedResourcesReferences

Elemen LocalizedResources berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
LocalizedResourcesReference 1:n Daftar referensi sumber daya yang dilokalkan untuk definisi konten.

Elemen LocalizedResourcesReference berisi atribut berikut:

Atribut Diperlukan Deskripsi
Bahasa Ya String yang berisi bahasa yang didukung untuk kebijakan per RFC 5646 - Tag untuk Mengidentifikasi Bahasa.
LocalizedResourcesReferenceId Ya Pengidentifikasi elemen LocalizedResources.

Contoh berikut menunjukkan definisi konten pendaftaran atau masuk dengan referensi ke pelokalan untuk bahasa Inggris, Prancis, dan Spanyol:

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>~/tenant/default/unified.cshtml</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0</DataUri>
  <Metadata>
    <Item Key="DisplayName">Signin and Signup</Item>
  </Metadata>
  <LocalizedResourcesReferences MergeBehavior="Prepend">
    <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.signuporsignin.en" />
    <LocalizedResourcesReference Language="fr" LocalizedResourcesReferenceId="api.signuporsignin.rf" />
    <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.signuporsignin.es" />
</LocalizedResourcesReferences>
</ContentDefinition>

Untuk mempelajari cara menambahkan dukungan pelokalan ke definisi konten Anda, lihat Pelokalan.

ID definisi konten

Atribut ID dari elemen ContentDefinition menentukan tipe halaman yang berkaitan dengan definisi konten. Elemen menentukan konteks yang akan diterapkan template HTML5/CSS kustom. Tabel berikut ini menjelaskan kumpulan ID definisi konten yang dikenali oleh Kerangka Kerja Pengalaman Identitas, dan tipe halaman yang terkait dengan ID tersebut. Anda dapat membuat definisi konten Anda sendiri dengan ID sesuai pilihan.

ID Templat default Deskripsi
api.error exception.cshtml Halaman kesalahan - Menampilkan halaman kesalahan saat pengecualian atau kesalahan ditemui.
api.idpselections idpSelector.cshtml Halaman pemilihan IdP - Mencantumkan IdP yang dapat dipilih pengguna pada saat masuk. Opsinya biasanya IdP perusahaan, IdP sosial seperti Facebook dan Google+, atau akun lokal.
api.idpselections.signup idpSelector.cshtml Pemilihan IdP untuk pendaftaran - Mencantumkan IdP yang dapat dipilih pengguna pada saat pendaftaran. Opsinya biasanya IdP perusahaan, IdP sosial seperti Facebook dan Google+, atau akun lokal.
api.localaccountpasswordreset selfasserted.cshtml Lupa halaman kata sandi - Menampilkan formulir yang harus diselesaikan pengguna untuk memulai reset kata sandi.
api.localaccountsignin selfasserted.cshtml Halaman masuk akun lokal - Menampilkan formulir untuk masuk dengan akun lokal yang didasarkan pada alamat email atau nama pengguna. Formulir dapat berisi kotak input teks dan kotak entri kata sandi.
api.localaccountsignup selfasserted.cshtml Halaman pendaftaran akun lokal - Menampilkan formulir untuk pendaftaran ke akun lokal yang didasarkan pada alamat email atau nama pengguna. Formulir dapat berisi berbagai kontrol input, seperti: kotak input teks, kotak entri kata sandi, tombol radio, kotak drop-down pilih tunggal, dan kotak centang multi-pilih.
api.phonefactor multifaktor-1.0.0.cshtml Halaman autentikasi multifaktor - Memverifikasi nomor telepon, dengan menggunakan teks atau suara, selama pendaftaran atau masuk.
api.selfasserted selfasserted.cshtml Halaman pendaftaran akun sosial - Menampilkan formulir yang harus diisi pengguna saat mereka mendaftar dengan menggunakan akun yang ada dari IdP sosial. Halaman ini mirip dengan halaman pendaftaran akun sosial sebelumnya, kecuali untuk bidang entri kata sandi.
api.selfasserted.profileupdate updateprofile.cshtml Halaman pembaruan profil - Menampilkan formulir yang dapat diakses pengguna untuk memperbarui profil mereka. Halaman ini mirip dengan halaman pendaftaran akun sosial, kecuali untuk bidang entri kata sandi.
api.signuporsignin unified.cshtml Halaman pendaftaran atau masuk terpadu - Menangani proses pendaftaran dan masuk pengguna. Pengguna dapat menggunakan IdP perusahaan, IdP sosial seperti Facebook atau Google+, atau akun lokal.

Langkah berikutnya

Untuk contoh mengkustomisasi antarmuka pengguna dengan menggunakan definisi konten, lihat:

Sesuaikan antarmuka pengguna aplikasi Anda menggunakan kebijakan kustom