RelyingParty

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.

Elemen RelyingParty menentukan perjalanan pengguna untuk memberlakukan permintaan saat ini ke Azure Active Directory B2C (Azure AD B2C). Elemen ini juga menentukan daftar klaim yang dibutuhkan aplikasi pihak yang mengandalkan (RP) sebagai bagian dari token yang dikeluarkan. Aplikasi RP, seperti aplikasi web, seluler, atau desktop, memanggil file kebijakan RP. File kebijakan RP menjalankan tugas tertentu, seperti rincian masuk, mereset kata sandi, atau mengedit profil. Beberapa aplikasi dapat menggunakan kebijakan RP yang sama dan satu aplikasi dapat menggunakan beberapa kebijakan. Semua aplikasi RP menerima token yang sama dengan klaim, dan pengguna melalui perjalanan pengguna yang sama.

Contoh berikut menunjukkan elemen RelyingParty dalam file kebijakan B2C_1A_signup_signin:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="https://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="your-tenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://your-tenant.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>your-tenant.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="7"/>
      <SessionExpiryType>Rolling</SessionExpiryType>
      <SessionExpiryInSeconds>900</SessionExpiryInSeconds>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="your-application-insights-key" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <ContentDefinitionParameters>
        <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
      </ContentDefinitionParameters>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Description>The policy profile</Description>
      <Protocol Name="OpenIdConnect" />
      <Metadata>collection of key/value pairs of data</Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="loyaltyNumber" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
  ...

Elemen RelyingParty opsional berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
DefaultUserJourney 1:1 Perjalanan pengguna default untuk aplikasi RP.
Endpoints 0:1 Daftar titik akhir. Untuk informasi selengkapnya, lihat Titik akhir UserInfo.
UserJourneyBehaviors 0:1 Cakupan perilaku perjalanan pengguna.
TechnicalProfile 1:1 Profil teknis yang didukung oleh aplikasi RP. Profil teknis menyediakan kontrak untuk aplikasi RP untuk menghubungi Azure Active Directory B2C.

Anda perlu membuat elemen anak RelyingParty dalam urutan yang disajikan dalam tabel sebelumnya.

Endpoints

Elemen Titik akhir berisi elemen berikut:

Elemen Kemunculan Deskripsi
Endpoint 1:1 Referensi ke titik akhir.

Elemen Endpoint berisi atribut berikut ini:

Atribut Diperlukan Deskripsi
Id Ya Pengidentifikasi unik dari titik akhir.
UserJourneyReferenceId Ya Pengidentifikasi perjalanan dalam kebijakan. Untuk informasi selengkapnya, lihat perjalanan

Contoh berikut menunjukkan pihak mengandalkan dengan titik akhir UserInfo:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <Endpoints>
    <Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
  </Endpoints>
  ...

DefaultUserJourney

Elemen DefaultUserJourney menentukan referensi ke pengidentifikasi perjalanan yang didefinisikan dalam kebijakan Dasar atau Ekstensi. Contoh berikut menunjukkan perjalanan pendaftaran atau masuk yang ditentukan dalam elemen RelyingParty:

kebijakan B2C_1A_signup_signin:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn">
  ...

B2C_1A_TrustFrameWorkBase atau B2C_1A_TrustFrameworkExtensionPolicy:

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
  ...

Elemen DefaultUserJourney berisi atribut berikut:

Atribut Diperlukan Deskripsi
ReferenceId Ya Pengidentifikasi perjalanan dalam kebijakan. Untuk informasi selengkapnya, lihat perjalanan

UserJourneyBehaviors

Elemen UserJourneyBehaviors berisi elemen berikut:

Elemen Kemunculan Deskripsi
SingleSignOn 0:1 Cakupan perilaku sesi akses menyeluruh (SSO) dari perjalanan.
SessionExpiryType 0:1 Perilaku autentikasi sesi. Nilai yang mungkin: Rolling atau Absolute. Nilai Rolling (default) menunjukkan bahwa pengguna tetap masuk selama pengguna terus aktif dalam aplikasi. Nilai Absolute menunjukkan bahwa pengguna dipaksa untuk mengautentikasi ulang setelah jangka waktu yang ditentukan oleh masa sesi aplikasi.
SessionExpiryInSeconds 0:1 Masa pakai cookie sesi Azure Active Directory B2C ditentukan sebagai bilangan bulat yang disimpan di browser pengguna setelah autentikasi berhasil. Defaultnya adalah 86,400 detik (24 jam). Minimumnya adalah 900 detik (15 menit). Maksimumnya adalah 86,400 detik (24 jam).
JourneyInsights 0:1 Kunci instrumentasi Application Insights Azure yang akan digunakan.
ContentDefinitionParameters 0:1 Daftar pasangan nilai kunci yang akan ditambahkan ke URI beban definisi konten.
JourneyFraming 0:1 Memungkinkan antarmuka pengguna dari kebijakan ini dimuat dalam iframe.
ScriptExecution 0:1 Mode eksekusi JavaScript yang didukung. Nilai yang mungkin: Allow atau Disallow (default).

Saat Anda menggunakan elemen di atas, Anda perlu menambahkannya ke elemen UserJourneyBehaviors Dalam urutan yang ditentukan dalam tabel. Misalnya, elemen JourneyInsights harus ditambahkan sebelum (di atas) elemen ScriptExecution .

SingleSignOn

Elemen SingleSignOn berisi atribut berikut:

Atribut Diperlukan Deskripsi
Scope Ya Cakupan perilaku akses menyeluruh. Nilai yang mungkin: Suppressed, Tenant, Application, atau Policy. Nilai Suppressed menunjukkan bahwa perilaku ditekan, dan pengguna selalu diminta untuk memilih penyedia identitas (IdP). Nilai Tenant menunjukkan bahwa perilaku diterapkan ke semua kebijakan dalam penyewa. Misalnya, pengguna yang menavigasi melalui dua perjalanan kebijakan untuk penyewa tidak diminta untuk memilih IdP. Nilai Application menunjukkan bahwa perilaku diterapkan ke semua kebijakan untuk aplikasi yang membuat permintaan. Misalnya, pengguna yang menavigasi melalui dua perjalanan kebijakan untuk aplikasi tidak diminta untuk memilih IdP. Nilai Policy menunjukkan bahwa perilaku hanya berlaku untuk kebijakan. Misalnya, pengguna yang menavigasi melalui dua perjalanan kebijakan untuk kerangka kerja kepercayaan diminta untuk memilih IdP saat beralih antar kebijakan.
KeepAliveInDays Tidak Mengontrol berapa lama pengguna tetap masuk. Mengatur nilai ke 0 akan menonaktifkan fungsionalitas KMSI. Defaultnya adalah 0 (dinonaktifkan). Jumlah minimumnya adalah 1 hari. Jumlah maksimumnya adalah 90 hari. Untuk informasi selengkapnya, lihat Biarkan saya tetap masuk.
EnforceIdTokenHintOnLogout Tidak Memaksa penerusan token ID yang dikeluarkan sebelumnya ke titik akhir keluar sebagai petunjuk tentang sesi terautentikasi pengguna akhir saat ini dengan klien. Nilai yang mungkin: false (default), atau true. Untuk informasi selengkapnya, lihat Masuk web dengan OpenID Connect.

JourneyInsights

Elemen JourneyInsights berisi atribut berikut:

Atribut Diperlukan Deskripsi
TelemetryEngine Ya Nilainya harus ApplicationInsights.
InstrumentationKey Ya Untai yang berisi kunci instrumentasi untuk elemen wawasan aplikasi.
DeveloperMode Ya Nilai yang mungkin: true atau false. Jika true, Application Insights mempercepat telemetri melalui alur pemrosesan. Pengaturan ini baik untuk pengembangan, tetapi terkendala pada volume tinggi. Log aktivitas terperinci dirancang hanya untuk membantu pengembangan kebijakan kustom. Jangan gunakan mode pengembangan dalam produksi. Log mengumpulkan semua klaim yang dikirim ke dan dari IdP selama pengembangan. Jika digunakan dalam produksi, pengembang bertanggung jawab atas data pribadi yang dikumpulkan dalam log Wawasan Aplikasi yang mereka miliki. Log terperinci ini hanya dikumpulkan ketika nilai ini diatur ke true.
ClientEnabled Ya Nilai yang mungkin: true atau false. Jika true, mengirimkan skrip sisi klien Application Insights untuk melacak tampilan halaman dan kesalahan sisi klien.
ServerEnabled Ya Nilai yang mungkin: true atau false. Jika true, mengirimkan UserJourneyRecorder JSON yang ada sebagai peristiwa khusus ke Application Insights.
TelemetryVersion Ya Nilainya harus 1.0.0.

Untuk informasi selengkapnya, lihat Mengumpulkan Log

ContentDefinitionParameters

Dengan menggunakan kebijakan kustom di Azure Active Directory B2C, Anda bisa mengirim parameter dalam untai kueri. Dengan meneruskan parameter ke titik akhir HTML, Anda dapat mengubah konten halaman secara dinamis. Misalnya, Anda dapat mengubah gambar latar belakang pada halaman pendaftaran atau masuk Azure AD B2C, berdasarkan parameter yang Anda lewati dari web atau aplikasi seluler Anda. Azure AD B2C meneruskan parameter untai kueri ke file HTML dinamis Anda, seperti file aspx.

Contoh berikut meneruskan parameter yang dinamai campaignId dengan nilai hawaii dalam untai kueri:

https://login.microsoft.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?pB2C_1A_signup_signin&client_id=a415078a-0402-4ce3-a9c6-ec1947fcfb3f&nonce=defaultNonce&redirect_uri=http%3A%2F%2Fjwt.io%2F&scope=openid&response_type=id_token&prompt=login&campaignId=hawaii

Elemen ContentDefinitionParameters berisi elemen berikut:

Elemen Kemunculan Deskripsi
ContentDefinitionParameter 0:n Untai yang berisi pasangan nilai kunci yang ditambahkan ke untai kueri URI beban definisi konten.

Elemen ContentDefinitionParameter berisi atribut berikut:

Atribut Diperlukan Deskripsi
Nama Ya Nama pasangan nilai kunci.

Untuk informasi selengkapnya, lihat Mengonfigurasi UI dengan konten dinamis dengan menggunakan kebijakan kustom

JourneyFraming

Elemen JourneyFraming berisi atribut berikut:

Atribut Diperlukan Deskripsi
Aktif Ya Memungkinkan kebijakan ini dimuat dalam iframe. Nilai yang mungkin: false (default), atau true.
Sumber Ya Berisi domain yang akan memuat host iframe. Untuk informasi selengkapnya, lihat Memuat Azure B2C dalam iframe.

TechnicalProfile

Elemen TechnicalProfile berisi atribut berikut:

Atribut Diperlukan Deskripsi
Id Ya Nilainya harus PolicyProfile.

Elemen TechnicalProfile berisi elemen berikut:

Elemen Kemunculan Deskripsi
DisplayName 1:1 Untai yang berisi nama profil teknis.
Deskripsi 0:1 Untai yang berisi deskripsi profil teknis.
Protokol 1:1 Protokol yang digunakan untuk federasi.
Metadata 0:1 Pengumpulan Item pasangan kunci/nilai yang digunakan oleh protokol untuk berkomunikasi dengan titik akhir dalam kursus transaksi untuk mengonfigurasi interaksi antara pihak yang mengandalkan dan peserta komunitas lainnya.
InputClaims 1:1 Daftar jenis klaim yang diambil sebagai input di profil teknis. Setiap elemen ini berisi referensi ke ClaimType yang telah ditentukan di bagian ClaimsSchema atau dalam kebijakan yang diwarisi oleh file kebijakan ini.
OutputClaims 1:1 Daftar jenis klaim yang diambil sebagai output di profil teknis. Setiap elemen ini berisi referensi ke ClaimType yang telah ditentukan di bagian ClaimsSchema atau dalam kebijakan yang diwarisi oleh file kebijakan ini.
SubjectNamingInfo 1:1 Nama subjek yang digunakan dalam token.

Elemen Protokol berisi atribut berikut ini:

Atribut Diperlukan Deskripsi
Nama Ya Nama protokol yang valid didukung oleh Azure Active Directory B2C yang digunakan sebagai bagian dari profil teknis. Nilai yang mungkin: OpenIdConnect atau SAML2. Nilai OpenIdConnect tersebut menunjukkan standar protokol OpenID Connect 1.0 sesuai spesifikasi dasar OpenID. SAML2 mewakili standar protokol SAML 2.0 sesuai spesifikasi OASIS.

Metadata

Ketika protokol adalah SAML, elemen metadata berisi elemen-elemen berikut. Untuk informasi selengkapnya, lihat Opsi untuk mendaftarkan aplikasi SAML di Azure Active Directory B2C.

Atribut Diperlukan Deskripsi
IdpInitiatedProfileEnabled Tidak Menunjukkan apakah alur yang dimulai IDP didukung. Nilai yang mungkin: true atau false (default).
XmlSignatureAlgorithm Tidak Metode yang digunakan Azure AD B2C untuk menandatangani Respons SAML. Nilai yang mungkin: Sha256, Sha384, Sha512, atau Sha1. Pastikan Anda mengonfigurasi algoritma tanda tangan di kedua sisi dengan nilai yang sama. Hanya gunakan algoritma yang didukung sertifikat Anda. Untuk mengonfigurasi Pernyataan SAML, lihat metadata profil teknis penerbit SAML.
DataEncryptionMethod Tidak Menunjukkan metode yang digunakan Azure Active Directory B2C untuk mengenkripsi data, menggunakan algoritma Standar Enkripsi Lanjutan (AES). Metadata mengontrol nilai elemen <EncryptedData> dalam respons SAML. Nilai yang mungkin: Aes256 (default), Aes192, Sha512, atau Aes128.
KeyEncryptionMethod Tidak Menunjukkan metode yang digunakan Azure Active Directory B2C untuk mengenkripsi salinan kunci yang digunakan untuk mengenkripsi data. Metadata mengontrol nilai elemen <EncryptedKey> dalam respons SAML. Nilai yang mungkin: Rsa15 (default) - algoritma Standar Kriptografi Kunci Publik (PKCS) RSA Versi 1.5, RsaOaep - algoritma enkripsi Padding Enkripsi Asimetris Optimal (OAEP) RSA.
UseDetachedKeys Tidak Nilai yang mungkin: true, atau false (default). Saat nilai diatur ke true, Azure Active Directory B2C mengubah format pernyataan terenkripsi. Menggunakan kunci yang terlepas akan menambahkan pernyataan terenkripsi sebagai turunan dari EncrytedAssertion, bukan EncryptedData.
WantsSignedResponses Tidak Menunjukkan apakah Azure Active Directory B2C menandatangani bagian Response respons SAML. Nilai yang mungkin: true (default) atau false.
RemoveMillisecondsFromDateTime Tidak Menunjukkan apakah milidetik akan dihapus dari nilai tanggalwaktu dalam respons SAML (ini termasuk IssueInstant, NotBefore, NotOnOrAfter, dan AuthnInstant). Nilai yang mungkin: false (default) atau true.
RequestContextMaximumLengthInBytes Tidak Menunjukkan panjang maksimum parameter aplikasi SAMLRelayState. Defaultnya adalah 1000. Maksimumnya adalah 2048.

InputClaims

Elemen InputClaims berisi elemen berikut ini:

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

Elemen InputClaim berisi atribut berikut:

Atribut Diperlukan Deskripsi
ClaimTypeReferenceId Ya Referensi ke ClaimType sudah ditentukan di bagian ClaimsSchema dalam file kebijakan.
DefaultValue Tidak Nilai default yang dapat digunakan jika nilai klaim kosong.
PartnerClaimType Tidak Mengirimkan klaim dengan nama yang berbeda seperti yang dikonfigurasi dalam definisi ClaimType.

OutputClaims

Elemen OutputClaims berisi elemen berikut:

Elemen Kemunculan Deskripsi
OutputClaim 0:n Nama jenis klaim yang diharapkan dalam daftar yang didukung untuk kebijakan tempat pihak yang mengandalkan berlangganan. Klaim ini berfungsi sebagai output untuk profil teknis.

Elemen OutputClaim berisi atribut berikut:

Atribut Diperlukan Deskripsi
ClaimTypeReferenceId Ya Referensi ke ClaimType sudah ditentukan di bagian ClaimsSchema dalam file kebijakan.
DefaultValue Tidak Nilai default yang dapat digunakan jika nilai klaim kosong.
PartnerClaimType Tidak Mengirimkan klaim dengan nama yang berbeda seperti yang dikonfigurasi dalam definisi ClaimType.

SubjectNamingInfo

Dengan elemen SubjectNameingInfo, Anda mengontrol nilai subjek token:

  • Token JWT - klaim sub. Ini adalah prinsipal yang tokennya menegaskan informasi, seperti pengguna aplikasi. Nilai ini tidak dapat diubah dan tidak dapat ditetapkan ulang atau digunakan kembali. Ini dapat digunakan untuk melakukan pemeriksaan otorisasi dengan aman, seperti saat token digunakan untuk mengakses sumber daya. Secara default, klaim subjek diisi dengan ID objek pengguna di direktori. Untuk informasi selengkapnya, lihat Token, sesi, dan konfigurasi akses menyeluruh.
  • Token SAML - elemen <Subject><NameID>, yang mengidentifikasi elemen subjek. Format NameId dapat dimodifikasi.

Elemen SubjectNamingInfo berisi atribut berikut:

Atribut Diperlukan Deskripsi
ClaimType Ya Referensi ke klaim output PartnerClaimType. Klaim output harus ditentukan dalam kumpulan kebijakan pihak terpercaya OutputClaims dengan PartnerClaimType. Misalnya, <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" /> atau <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
Format Tidak Digunakan untuk pihak yang mengandalkan SAML untuk mengatur format NameId yang dikembalikan dalam Pernyataan SAML.

Contoh berikut menunjukkan cara menentukan pihak yang mengandalkan OpenID Connect. Info nama subjek dikonfigurasi sebagai objectId:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Token JWT mencakup klaim sub dengan user objectId:

{
  ...
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  ...
}

Contoh berikut menunjukkan cara mendefinisikan pihak yang mengandalkan SAML. Info nama subjek dikonfigurasi sebagai objectId, dan NameId format telah disediakan:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
  </TechnicalProfile>
</RelyingParty>