Profil teknis

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.

Profil teknis menyediakan kerangka kerja dengan mekanisme bawaan untuk berkomunikasi dengan berbagai jenis pihak. Profil teknis digunakan untuk berkomunikasi dengan penyewa Azure Active Directory B2C (Azure AD B2C) untuk membuat pengguna atau membaca profil pengguna. Profil teknis dapat membuat pernyataan sendiri untuk memungkinkan interaksi dengan pengguna. Misalnya, profil teknis dapat mengumpulkan info masuk pengguna untuk masuk lalu merender halaman pendaftaran atau halaman reset kata sandi.

Jenis profil teknis

Profil teknis memungkinkan jenis skenario ini:

  • Application Insights: Mengirim data peristiwa ke Application Insights.
  • ID Microsoft Entra: Menyediakan dukungan untuk manajemen pengguna Azure AD B2C.
  • Autentikasi multifaktor Microsoft Entra: Menyediakan dukungan untuk memverifikasi nomor telepon dengan menggunakan autentikasi multifaktor Microsoft Entra.
  • Transformasi klaim: Memanggil transformasi klaim output untuk memanipulasi nilai klaim, memvalidasi klaim, atau menetapkan nilai default untuk set klaim output.
  • Petunjuk token ID: Memvalidasi tanda tangan token JWT id_token_hint, nama pengeluar sertifikat, dan audiens token, serta mengekstrak klaim dari token masuk.
  • Pengeluar sertifikat token JWT: Memancarkan token JWT yang dikembalikan ke aplikasi pihak yang mengandalkan.
  • OAuth1: Federasi dengan IdP protokol OAuth 1.0.
  • OAuth2: Federasi dengan IdP protokol OAuth 2.0.
  • Kata sandi sekali pakai: Menyediakan dukungan untuk mengelola pembuatan dan verifikasi kata sandi sekali pakai.
  • OpenID Connect: Federasi dengan IdP protokol OpenID Connect apa pun.
  • Faktor telepon: Mendukung pendaftaran dan verifikasi nomor telepon.
  • Penyedia RESTful: Memanggil layanan REST API, seperti memvalidasi input pengguna, memperkaya data pengguna, atau berintegrasi dengan aplikasi lini bisnis.
  • IdP SAML: Federasi dengan IdP protokol SAML.
  • Pengeluar sertifikat token SAML: Memancarkan token SAML yang dikembalikan ke aplikasi pihak yang mengandalkan.
  • Membuat pernyataan sendiri: Berinteraksi dengan pengguna. Misalnya, mengumpulkan info masuk pengguna untuk masuk, merender halaman pendaftaran, atau mereset kata sandi.
  • Manajemen sesi: Menangani berbagai jenis sesi.

Alur profil teknis

Semua jenis profil teknis memiliki konsep yang sama. Profil teknis mulai dengan membaca klaim input dan menjalankan transformasi klaim. Kemudian mereka berkomunikasi dengan pihak yang dikonfigurasi, seperti penyedia identitas, REST API, atau layanan direktori Microsoft Entra. Setelah proses selesai, profil teknis mengembalikan klaim output dan mungkin menjalankan transformasi klaim output. Diagram berikut menunjukkan cara pemrosesan transformasi dan pemetaan yang direferensikan di profil teknis. Setelah transformasi klaim dijalankan, klaim output segera disimpan di kantong klaim, terlepas dari pihak mana yang berinteraksi dengan profil teknis.

Diagram that illustrates the technical profile flow.

  1. Manajemen sesi akses menyeluruh (SSO): Memulihkan status sesi profil teknis dengan menggunakan manajemen sesi SSO.
  2. Transformasi klaim input: Sebelum profil teknis dimulai, Azure AD B2C menjalankan transformasi klaim input.
  3. Klaim input: Klaim diambil dari kantong klaim yang digunakan untuk profil teknis.
  4. Eksekusi profil teknis: Profil teknis bertukar klaim dengan pihak yang dikonfigurasi. Misalnya:
    • Mengalihkan pengguna ke penyedia identitas untuk menyelesaikan proses masuk. Setelah berhasil masuk, pengguna kembali dan eksekusi profil teknis dilanjutkan.
    • Memanggil REST API saat mengirim parameter sebagai InputClaims dan mendapatkan informasi kembali sebagai OutputClaims.
    • Membuat atau memperbarui akun pengguna.
    • Mengirim dan memverifikasi pesan teks autentikasi multifaktor.
  5. Profil teknis validasi: Profil teknis yang membuat pernyataan sendiri dapat memanggil profil teknis validasi untuk memvalidasi data yang diprofilkan oleh pengguna. Hanya profil teknis self-asserted yang dapat menggunakan profil teknis validasi.
  6. Klaim output: Klaim dikembalikan ke kantong klaim. Anda dapat menggunakan klaim tersebut dalam langkah orkestrasi berikutnya atau transformasi klaim output.
  7. Transformasi klaim output: Setelah profil teknis selesai, Azure AD B2C menjalankan transformasi klaim output.
  8. Manajemen sesi SSO: Menjaga data profil teknis ke sesi dengan menggunakan manajemen sesi SSO.

Elemen TechnicalProfiles berisi set profil teknis yang didukung oleh penyedia klaim. Setiap penyedia klaim harus memiliki setidaknya satu profil teknis. Profil teknis menentukan titik akhir dan protokol yang diperlukan untuk berkomunikasi dengan penyedia klaim. Penyedia klaim dapat memiliki beberapa profil teknis.

<ClaimsProvider>
  <DisplayName>Display name</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Technical profile identifier">
      <DisplayName>Display name of technical profile</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        ...
      </Metadata>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Elemen TechnicalProfile berisi atribut berikut:

Atribut Wajib Deskripsi
Id Ya Pengidentifikasi unik dari profil teknis. Profil teknis dapat direferensikan dengan menggunakan pengidentifikasi ini dari elemen lain dalam file kebijakan. Contohnya adalah OrchestrationSteps dan ValidationTechnicalProfile.

Elemen TechnicalProfile berisi atribut berikut:

Elemen Kemunculan Deskripsi
Domain 0:1 Nama domain untuk profil teknis. Misalnya, jika profil teknis Anda menentukan penyedia identitas Facebook, nama domainnya adalah Facebook.com.
DisplayName 1:1 Nama tampilan profil teknis.
Deskripsi 0:1 Deskripsi nama tampilan profil teknis.
Protokol 1:1 Protokol yang digunakan untuk komunikasi dengan pihak lain.
Metadata 0:1 Set kunci dan nilai yang mengontrol perilaku profil teknis.
InputTokenFormat 0:1 Format token input. Kemungkinan nilainya adalah JSON, JWT, SAML11, atau SAML2. Nilai JWT mewakili JSON Web Token per spesifikasi IETF. Nilai SAML11 mewakili token keamanan SAML 1.1 per spesifikasi OASIS. Nilai SAML2 mewakili token keamanan SAML 2.0 per spesifikasi OASIS.
OutputTokenFormat 0:1 Format token output. Kemungkinan nilainya adalah JSON, JWT, SAML11, atau SAML2.
CryptographicKeys 0:1 Daftar kunci kriptografi yang digunakan dalam profil teknis.
InputClaimsTransformations 0:1 Daftar referensi yang ditentukan sebelumnya untuk mengklaim transformasi yang harus dijalankan sebelum klaim dikirim ke penyedia klaim atau pihak yang mengandalkan.
InputClaims 0:1 Daftar referensi yang ditentukan sebelumnya untuk jenis klaim yang diambil sebagai input di profil teknis.
PersistedClaims 0:1 Daftar referensi yang ditentukan sebelumnya untuk jenis klaim yang akan dipertahankan oleh profil teknis.
DisplayClaims 0:1 Daftar referensi yang ditentukan sebelumnya untuk jenis klaim yang akan disajikan oleh profil teknis yang membuat pernyataan sendiri. Fitur DisplayClaims saat ini dalam pratinjau.
OutputClaims 0:1 Daftar referensi yang ditentukan sebelumnya untuk jenis klaim yang diambil sebagai output di profil teknis.
OutputClaimsTransformations 0:1 Daftar referensi yang ditentukan sebelumnya untuk mengklaim transformasi yang harus dijalankan setelah klaim diterima dari penyedia klaim.
ValidationTechnicalProfiles 0:n Daftar referensi ke profil teknis lain yang digunakan profil teknis untuk tujuan validasi. Untuk informasi selengkapnya, lihat Profil teknis validasi.
SubjectNamingInfo 0:1 Mengontrol produksi nama subjek dalam token di mana nama subjek ditentukan secara terpisah dari klaim. Contohnya adalah OAuth atau SAML.
IncludeInSso 0:1 Apakah penggunaan profil teknis ini harus menerapkan perilaku SSO untuk sesi atau sebaliknya memerlukan interaksi eksplisit. Elemen ini hanya valid dalam profil SelfAsserted yang digunakan dalam profil teknis validasi. Kemungkinan nilainya adalah true (default) atau false.
IncludeClaimsFromTechnicalProfile 0:1 Pengidentifikasi profil teknis tempat Anda ingin semua klaim input dan output ditambahkan ke profil teknis ini. Profil teknis yang direferensikan harus didefinisikan dalam file kebijakan yang sama.
IncludeTechnicalProfile 0:1 Pengidentifikasi profil teknis tempat Anda ingin semua data ditambahkan ke profil teknis ini.
UseTechnicalProfileForSessionManagement 0:1 Profil teknis berbeda yang akan digunakan untuk manajemen sesi.
EnabledForUserJourneys 0:1 Mengontrol apakah profil teknis dijalankan dalam perjalanan atau tidak.

Protokol

Elemen Protokol menentukan protokol yang akan digunakan untuk komunikasi dengan pihak lain. Elemen Protokol berisi atribut berikut ini:

Atribut Wajib Deskripsi
Nama Ya Nama protokol yang valid didukung oleh Azure AD B2C yang digunakan sebagai bagian dari profil teknis. Kemungkinan nilainya adalah OAuth1, OAuth2, SAML2, OpenIdConnect, Proprietary, atau None.
Penghandel No Saat nama protokol diatur ke Proprietary, menentukan nama rakitan yang digunakan oleh Azure AD B2C untuk menentukan penghandel protokol. Jika Anda mengatur atribut Nama protokol ke None, jangan sertakan atribut Handler.

Metadata

Elemen Metadata berisi opsi konfigurasi yang relevan dengan protokol tertentu. Daftar metadata yang didukung didokumentasikan dalam spesifikasi profil teknis yang sesuai. Elemen Metadata berisi elemen berikut:

Elemen Kemunculan Deskripsi
Item 0:n Metadata yang berkaitan dengan profil teknis. Setiap jenis profil teknis memiliki set item metadata yang berbeda. Untuk informasi selengkapnya, lihat bagian jenis profil teknis.

Item

Elemen Item dari elemen Metadata berisi atribut berikut:

Atribut Wajib Deskripsi
Tombol Ya Kunci metadata. Lihat setiap jenis profil teknis untuk daftar item metadata.

Contoh berikut mengilustrasikan penggunaan metadata yang relevan dengan profil teknis OAuth2.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <Metadata>
    <Item Key="ProviderName">facebook</Item>
    <Item Key="authorization_endpoint">https://www.facebook.com/dialog/oauth</Item>
    <Item Key="AccessTokenEndpoint">https://graph.facebook.com/oauth/access_token</Item>
    <Item Key="HttpBinding">GET</Item>
    <Item Key="UsePolicyInRedirectUri">0</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

Contoh berikut mengilustrasikan penggunaan metadata yang relevan dengan profil teknis REST API.

<TechnicalProfile Id="REST-Validate-Email">
  ...
  <Metadata>
    <Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item>
    <Item Key="AuthenticationType">Bearer</Item>
    <Item Key="SendClaimsIn">Body</Item>
    ...
  </Metadata>
  ...
</TechnicalProfile>

Kunci kriptografi

Untuk membangun kepercayaan dengan layanan yang berintegrasi dengannya, Azure AD B2C menyimpan rahasia dan sertifikat dalam bentuk kunci kebijakan. Selama eksekusi profil teknis, Azure AD B2C mengambil kunci kriptografi dari kunci kebijakan Azure AD B2C. Kemudian Azure AD B2C menggunakan kunci untuk membangun kepercayaan atau mengenkripsi atau menandatangani token. Kepercayaan ini terdiri dari:

Elemen CryptographicKeys berisi atribut berikut:

Elemen Kemunculan Deskripsi
Tombol 1:n Kunci kriptografi yang digunakan dalam profil teknis ini.

Tombol

Elemen Kunci berisi atribut berikut:

Atribut Wajib Deskripsi
Id No Pengidentifikasi unik dari pasangan kunci tertentu yang dirujuk dari elemen lain dalam file kebijakan.
StorageReferenceId Ya Pengidentifikasi kontainer kunci penyimpanan yang dirujuk dari elemen lain dalam file kebijakan.

Transformasi klaim input

Elemen InputClaimsTransformations mungkin berisi kumpulan elemen transformasi klaim input yang digunakan untuk memodifikasi klaim input atau membuat yang baru.

Klaim output dari transformasi klaim sebelumnya dalam kumpulan transformasi klaim dapat menjadi klaim input dari transformasi klaim input berikutnya. Dengan cara ini, Anda dapat memiliki urutan transformasi klaim yang bergantung pada satu sama lain.

Elemen InputClaimsTransformations berisi elemen berikut:

Elemen Kemunculan Deskripsi
InputClaimsTransformation 1:n Pengidentifikasi transformasi klaim yang harus dijalankan sebelum klaim dikirim ke penyedia klaim atau pihak yang mengandalkan. Transformasi klaim dapat digunakan untuk memodifikasi klaim ClaimsSchema yang ada atau membuat yang baru.

InputClaimsTransformation

Elemen InputClaimsTransformation berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi transformasi klaim yang sudah ditentukan dalam file kebijakan atau file kebijakan induk.

Profil teknis berikut mereferensikan transformasi klaim CreateOtherMailsFromEmail. Transformasi klaim menambahkan nilai klaim email ke kumpulan otherMails sebelum mempertahankan data ke direktori.

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  ...
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  ...
</TechnicalProfile>

Klaim input

Elemen InputClaims mengambil klaim dari kantong klaim yang digunakan untuk profil teknis. Misalnya, profil teknis yang membuat pernyataan sendiri menggunakan klaim input untuk melakukan pra-populasi pada klaim output yang disediakan pengguna. Profil teknis REST API menggunakan klaim input untuk mengirim parameter input ke titik akhir REST API. Azure AD B2C menggunakan klaim input sebagai pengidentifikasi unik untuk membaca, memperbarui, atau menghapus akun.

Elemen InputClaims berisi elemen berikut ini:

Elemen Kemunculan Deskripsi
InputClaim 1:n Jenis klaim input yang diharapkan.

InputClaim

Elemen InputClaim berisi atribut berikut:

Atribut Wajib Deskripsi
ClaimTypeReferenceId Ya Pengidentifikasi jenis klaim. Pengidentifikasi jenis klaim yang sudah ditentukan di bagian skema klaim dalam file kebijakan atau file kebijakan induk.
DefaultValue No Nilai default yang digunakan untuk membuat klaim jika klaim yang ditunjukkan oleh ClaimTypeReferenceId tidak ada sehingga klaim yang dihasilkan dapat digunakan sebagai elemen InputClaim oleh profil teknis.
AlwaysUseDefaultValue Ya Memaksa penggunaan nilai default.
PartnerClaimType No Pengidentifikasi dari jenis klaim mitra eksternal tempat pemetaan jenis klaim kebijakan yang ditentukan. Jika atribut PartnerClaimType tidak ditentukan, jenis klaim kebijakan yang ditentukan dipetakan ke jenis klaim mitra dengan nama yang sama. Gunakan properti ini saat nama jenis klaim Anda berbeda dari pihak lain. Contohnya adalah jika nama klaim pertama adalah givenName, sementara mitra menggunakan klaim bernama first_name.

Klaim tampilan

Elemen DisplayClaims berisi daftar klaim yang akan disajikan di layar untuk mengumpulkan data dari pengguna. Dalam koleksi klaim tampilan, Anda bisa menyertakan referensi ke jenis klaim atau kontrol tampilan yang telah Anda buat.

  • Jenis klaim adalah referensi ke klaim yang akan ditampilkan di layar.
    • Guna mewajibkan pengguna memberikan nilai untuk klaim tertentu, atur atribut Required dari elemen DisplayClaim ke true.
    • Untuk melakukan pra-populasi nilai klaim tampilan, gunakan klaim input yang dijelaskan sebelumnya. Elemen mungkin juga berisi nilai default.
    • Elemen ClaimType dalam kumpulan DisplayClaims perlu mengatur elemen UserInputType ke jenis input pengguna yang didukung oleh Azure AD B2C. Contohnya adalah TextBox atau DropdownSingleSelect.
  • Kontrol tampilan adalah elemen antarmuka pengguna yang memiliki fungsionalitas khusus dan berinteraksi dengan layanan backend Azure AD B2C. Ini memungkinkan pengguna untuk melakukan tindakan di halaman yang memanggil profil teknis validasi di backend. Contohnya adalah memverifikasi alamat email, nomor telepon, atau nomor loyalitas pelanggan.

Urutan elemen dalam DisplayClaims menentukan urutan di mana Azure AD B2C merender klaim di layar.

Elemen DisplayClaims berisi elemen berikut ini:

Elemen Kemunculan Deskripsi
DisplayClaim 1:n Jenis klaim input yang diharapkan.

DisplayClaim

Elemen DisplayClaim berisi atribut berikut:

Atribut Wajib Deskripsi
ClaimTypeReferenceId No Pengidentifikasi jenis klaim yang sudah ditentukan di bagian ClaimsSchema dalam file kebijakan atau file kebijakan induk.
DisplayControlReferenceId No Pengidentifikasi kontrol tampilan yang sudah ditentukan di bagian ClaimsSchema dalam file kebijakan atau file kebijakan induk.
Diperlukan No Menunjukkan apakah klaim tampilan diperlukan atau tidak.

Contoh berikut mengilustrasikan penggunaan klaim tampilan dan kontrol tampilan dalam profil teknis yang membuat pernyataan sendiri.

Screenshot that shows a self-asserted technical profile with display claims.

Di profil teknis berikut:

  • Klaim tampilan pertama membuat referensi ke kontrol tampilan emailVerificationControl, yang mengumpulkan dan memverifikasi alamat email.
  • Klaim tampilan kelima membuat referensi ke kontrol tampilan phoneVerificationControl, yang mengumpulkan dan memverifikasi nomor telepon.
  • Klaim tampilan lainnya adalah elemen ClaimType yang akan dikumpulkan dari pengguna.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Klaim yang dipertahankan

Elemen PersistedClaims berisi semua nilai yang harus dipertahankan oleh profil teknis ID Microsoft Entra dengan kemungkinan informasi pemetaan antara jenis klaim yang sudah ditentukan di bagian ClaimsSchema dalam kebijakan dan nama atribut Microsoft Entra.

Nama klaim adalah nama atribut Microsoft Entra kecuali atribut PartnerClaimType ditentukan, yang berisi nama atribut Microsoft Entra.

Elemen PersistedClaims berisi elemen berikut ini:

Elemen Kemunculan Deskripsi
PersistedClaim 1:n Jenis klaim untuk dipertahankan.

PersistedClaim

Elemen PersistedClaim berisi atribut berikut:

Atribut Wajib Deskripsi
ClaimTypeReferenceId Ya Pengidentifikasi jenis klaim yang sudah ditentukan di bagian ClaimsSchema dalam file kebijakan atau file kebijakan induk.
DefaultValue No Nilai default yang digunakan untuk membuat klaim jika klaim tidak ada.
PartnerClaimType No Pengidentifikasi dari jenis klaim mitra eksternal tempat pemetaan jenis klaim kebijakan yang ditentukan. Jika atribut PartnerClaimType tidak ditentukan, jenis klaim kebijakan yang ditentukan dipetakan ke jenis klaim mitra dengan nama yang sama. Gunakan properti ini saat nama jenis klaim Anda berbeda dari pihak lain. Contohnya adalah jika nama klaim pertama adalah givenName, sementara mitra menggunakan klaim bernama first_name.

Dalam contoh berikut, profil teknis AAD-UserWriteUsingLogonEmail atau paket pemula, yang membuat akun lokal baru, mempertahankan klaim berikut:

<PersistedClaims>
  <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
  <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
  <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
  <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />
  <PersistedClaim ClaimTypeReferenceId="givenName" />
  <PersistedClaim ClaimTypeReferenceId="surname" />
</PersistedClaims>

Klaim output

Elemen OutputClaims adalah kumpulan klaim yang dikembalikan ke kantong klaim setelah profil teknis selesai. Anda dapat menggunakan klaim tersebut dalam langkah orkestrasi berikutnya atau transformasi klaim output. Elemen OutputClaims berisi elemen berikut:

Elemen Kemunculan Deskripsi
OutputClaim 1:n Jenis klaim output yang diharapkan.

OutputClaim

Elemen OutputClaim berisi atribut berikut:

Atribut Wajib Deskripsi
ClaimTypeReferenceId Ya Pengidentifikasi jenis klaim yang sudah ditentukan di bagian ClaimsSchema dalam file kebijakan atau file kebijakan induk.
DefaultValue No Nilai default yang digunakan untuk membuat klaim jika klaim tidak ada.
AlwaysUseDefaultValue No Memaksa penggunaan nilai default.
PartnerClaimType No Pengidentifikasi dari jenis klaim mitra eksternal tempat pemetaan jenis klaim kebijakan yang ditentukan. Jika atribut klaim partner tidak ditentukan, jenis klaim kebijakan yang ditentukan dipetakan ke jenis klaim mitra dengan nama yang sama. Gunakan properti ini saat nama jenis klaim Anda berbeda dari pihak lain. Contohnya adalah jika nama klaim pertama adalah givenName, sementara mitra menggunakan klaim bernama first_name.

Transformasi klaim output

Elemen OutputClaimsTransformations mungkin berisi kumpulan elemen OutputClaimsTransformation. Transformasi klaim output digunakan untuk memodifikasi klaim output atau membuat yang baru. Setelah eksekusi, klaim output dimasukkan kembali ke dalam kantong klaim. Anda dapat menggunakan klaim tersebut dalam langkah orkestrasi berikutnya.

Klaim output dari transformasi klaim sebelumnya dalam kumpulan transformasi klaim dapat menjadi klaim input dari transformasi klaim input berikutnya. Dengan cara ini, Anda dapat memiliki urutan transformasi klaim yang bergantung pada satu sama lain.

Elemen OutputClaimsTransformations berisi elemen berikut:

Elemen Kemunculan Deskripsi
OutputClaimsTransformation 1:n Pengidentifikasi transformasi klaim yang harus dijalankan sebelum klaim dikirim ke penyedia klaim atau pihak yang mengandalkan. Transformasi klaim dapat digunakan untuk memodifikasi klaim ClaimsSchema yang ada atau membuat yang baru.

OutputClaimsTransformation

Elemen OutputClaimsTransformation berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi transformasi klaim yang sudah ditentukan dalam file kebijakan atau file kebijakan induk.

Profil teknis berikut mereferensikan transformasi klaim AssertAccountEnabledIsTrue untuk mengevaluasi apakah akun diaktifkan atau tidak setelah membaca klaim accountEnabled dari direktori.

<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
  ...
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="accountEnabled" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
  </OutputClaimsTransformations>
  ...
</TechnicalProfile>

Profil teknis validasi

Profil teknis validasi digunakan untuk memvalidasi klaim output dalam profil teknis yang membuat pernyataan sendiri. Profil teknis validasi adalah profil teknis biasa dari protokol apa pun, seperti ID Microsoft Entra atau REST API. Profil teknis validasi mengembalikan klaim output atau mengembalikan kode galat. Pesan kesalahan dirender kepada pengguna di layar, yang memungkinkan pengguna untuk mencoba kembali.

Diagram berikut ini menggambarkan cara Azure AD B2C menggunakan profil teknis validasi untuk memvalidasi info masuk pengguna.

Diagram that shows a validation technical profile flow.

Elemen ValidationTechnicalProfiles berisi elemen berikut:

Elemen Kemunculan Deskripsi
ValidationTechnicalProfile 1:n Pengidentifikasi profil teknis yang digunakan untuk memvalidasi beberapa atau semua klaim output dari profil teknis referensi. Semua klaim input profil teknis yang direferensikan harus muncul dalam klaim output profil teknis referensi.

ValidationTechnicalProfile

Elemen ValidasiTechnicalProfile berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi profil teknis yang sudah ditentukan dalam file kebijakan atau file kebijakan induk.

SubjectNamingInfo

Elemen SubjectNamingInfo mendefinisikan nama subjek yang digunakan di token dalam kebijakan pihak yang mengandalkan. Elemen SubjectNamingInfo berisi atribut berikut:

Atribut Wajib Deskripsi
ClaimType Ya Pengidentifikasi jenis klaim yang sudah ditentukan di bagian ClaimsSchema dalam file kebijakan.

Menyertakan profil teknis

Profil teknis dapat menyertakan profil teknis lain untuk mengubah pengaturan atau menambahkan fungsionalitas baru. Elemen IncludeTechnicalProfile adalah referensi ke profil teknis umum dari mana profil teknis diturunkan. Untuk mengurangi redundansi dan kompleksitas elemen kebijakan Anda, gunakan inklusi saat Anda memiliki beberapa profil teknis yang berbagi elemen inti. Gunakan profil teknis umum dengan set konfigurasi umum, bersama dengan profil teknis tugas tertentu yang menyertakan profil teknis umum.

Misalkan Anda memiliki profil teknis REST API dengan satu titik akhir di mana Anda perlu mengirim set klaim yang berbeda untuk skenario yang berbeda. Buat profil teknis umum dengan fungsionalitas bersama, seperti URI titik akhir REST API, metadata, jenis autentikasi, dan kunci kriptografi. Buat profil teknis tugas tertentu yang menyertakan profil teknis umum. Kemudian tambahkan klaim input dan output, atau timpa URI titik akhir REST API yang relevan dengan profil teknis tersebut.

Elemen IncludeTechnicalProfile berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi profil teknis yang sudah ditentukan dalam file kebijakan atau file kebijakan induk.

Contoh berikut mengilustrasikan penggunaan inklusi:

  • REST-API-Common: Profil teknis umum dengan konfigurasi dasar.
  • REST-ValidateProfile: Menyertakan profil teknis REST-API-Common dan menentukan klaim input dan output.
  • REST-UpdateProfile: Menyertakan profil teknis REST-API-Common, menentukan klaim input dan output, dan menimpa metadata ServiceUrl.
<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-API-Common">
      <DisplayName>Base REST API configuration</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="SendClaimsIn">Body</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_B2cRestClientId" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_B2cRestClientSecret" />
      </CryptographicKeys>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-ValidateProfile">
      <DisplayName>Validate the account and return promo code</DisplayName>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
        <InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="promoCode" />
      </OutputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>

    <TechnicalProfile Id="REST-UpdateProfile">
      <DisplayName>Update the user profile</DisplayName>  
      <Metadata>
        <Item Key="ServiceUrl">https://your-app-name.azurewebsites.NET/api/identity/update</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="email" />
      </InputClaims>
      <IncludeTechnicalProfile ReferenceId="REST-API-Common" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Inklusi multitingkat

Profil teknis dapat menyertakan satu profil teknis. Tidak ada batasan jumlah tingkat inklusi. Misalnya, profil teknis AAD-UserReadUsingAlternativeSecurityId-NoError menyertakan AAD-UserReadUsingAlternativeSecurityId. Profil teknis ini mengatur item metadata RaiseErrorIfClaimsPrincipalDoesNotExist ke true dan menghasilkan kesalahan jika akun sosial tidak ada di direktori. AAD-UserReadUsingAlternativeSecurityId-NoError menimpa perilaku ini dan menonaktifkan pesan kesalahan tersebut.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId-NoError">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
  </Metadata>
  <IncludeTechnicalProfile ReferenceId="AAD-UserReadUsingAlternativeSecurityId" />
</TechnicalProfile>

AAD-UserReadUsingAlternativeSecurityId menyertakan profil teknis AAD-Common.

<TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">User does not exist. Please sign up before you can sign in.</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Baik AAD-UserReadUsingAlternativeSecurityId-NoError dan AAD-UserReadUsingAlternativeSecurityId tidak menentukan elemen Protokol yang diperlukan karena ditentukan dalam profil teknos AAD-Common.

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...
</TechnicalProfile>

Menggunakan profil teknis untuk manajemen sesi

Elemen UseTechnicalProfileForSessionManagement mereferensikan profil teknis sesi SSO. Elemen UseTechnicalProfileForSessionManagement berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi profil teknis yang sudah ditentukan dalam file kebijakan atau file kebijakan induk.

Diaktifkan untuk perjalanan

ClaimsProviderSelections dalam perjalanan menentukan daftar opsi pemilihan penyedia klaim dan urutan mereka. Dengan elemen EnabledForUserJourneys, Anda memfilter penyedia klaim mana yang tersedia untuk pengguna. Elemen EnabledForUserJourneys berisi salah satu nilai berikut:

  • Always: Menjalankan profil teknis.
  • Never: Melewati profil teknis.
  • OnClaimsExistence: Mengeksekusi hanya ketika ada klaim tertentu yang ditentukan dalam profil teknis.
  • OnItemExistenceInStringCollectionClaim: Mengeksekusi hanya ketika item ada dalam klaim koleksi untai.
  • OnItemAbsenceInStringCollectionClaim: Mengeksekusi hanya ketika item tidak ada dalam klaim koleksi untai.

Menggunakan OnClaimsExistence, OnItemExistenceInStringCollectionClaim, atau OnItemAbsenceInStringCollectionClaim mengharuskan Anda untuk memberikan metadata berikut:

  • ClaimTypeOnWhichToEnable: Menentukan jenis klaim yang akan dievaluasi.
  • ClaimValueOnWhichToEnable: Menentukan jenis klaim yang akan dibandingkan.

Profil teknis berikut dijalankan hanya jika kumpulan untai identityProviders berisi nilai facebook.com:

<TechnicalProfile Id="UnLink-Facebook-OAUTH">
  <DisplayName>Unlink Facebook</DisplayName>
...
    <Metadata>
      <Item Key="ClaimTypeOnWhichToEnable">identityProviders</Item>
      <Item Key="ClaimValueOnWhichToEnable">facebook.com</Item>
    </Metadata>
...
  <EnabledForUserJourneys>OnItemExistenceInStringCollectionClaim</EnabledForUserJourneys>
</TechnicalProfile>