Menentukan profil teknis OpenID Connect dalam kebijakan kustom Azure Active Directory 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 IdP protokol OpenID Connect. OpenID Connect 1.0 mendefinisikan lapisan identitas di atas OAuth 2.0 dan mewakili keadaan seni dalam protokol autentikasi modern. Dengan profil teknis OpenID Connect, Anda dapat bergabung dengan IdP berbasis OpenID Connect, seperti ID Microsoft Entra. Federasi dengan IdP memungkinkan pengguna masuk dengan identitas sosial atau perusahaan yang ada.

Protokol

Atribut Nama dari elemen Protokol perlu diatur ke OpenIdConnect. Misalnya, protokol untuk profil teknis MSA-OIDC adalah OpenIdConnect:

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

Klaim input

Elemen InputClaimsdan InputClaimsTransformations tidak diperlukan. Tetapi Anda mungkin ingin mengirim parameter tambahan ke IdP Anda. Contoh berikut menambahkan parameter untai kueri domain_hint dengan nilai contoso.com ke permintaan otorisasi.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

Klaim output

Elemen OutputClaims berisi daftar klaim yang dikembalikan oleh IdP OpenID Connect. Anda mungkin perlu memetakan nama klaim yang ditentukan dalam kebijakan Anda ke nama yang ditentukan dalam IdP. Anda juga dapat menyertakan klaim yang tidak dikembalikan oleh IdP selama Anda mengatur atribut DefaultValue.

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

Contoh berikut menunjukkan klaim yang ditampilkan oleh IdP Akun Microsoft:

  • Klaim sub yang dipetakan ke klaim IssuerUserId.
  • Klaim nama yang dipetakan ke klaim displayName.
  • Email tanpa pemetaan nama.

Profil teknis juga menampilkan klaim yang tidak ditampilkan oleh IdP:

  • Klaim identityProvider yang berisi nama IdP.
  • Klaim authenticationSource dengan nilai default socialIdpAuthentication.
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>

Metadata

Atribut Diperlukan Deskripsi
client_id Ya Pengidentifikasi aplikasi IdP.
IdTokenAudience Tidak Audiens id_token. Jika ditentukan, Azure AD B2C memeriksa apakah klaim aud dalam token yang dikembalikan oleh IdP sama dengan yang ditentukan dalam metadata IdTokenAudience.
METADATA Ya URL yang mengarah ke dokumen konfigurasi IdP OpenID Connect, yang juga dikenal sebagai titik akhir konfigurasi OpenID yang telah dikenal. URL dapat berisi ekspresi {tenant}, yang diganti dengan nama penyewa.
authorization_endpoint Tidak URL yang mengarah ke titik akhir otorisasi konfigurasi IdP OpenID Connect. Nilai metadata authorization_endpoint lebih diutamakan daripada authorization_endpoint yang ditentukan di titik akhir konfigurasi terkenal OpenID. URL dapat berisi ekspresi {tenant}, yang diganti dengan nama penyewa.
end_session_endpoint Tidak URL titik akhir sesi akhir. Nilai end_session_endpoint metadata lebih diutamakan daripada end_session_endpoint yang ditentukan di titik akhir konfigurasi terkenal OpenID.
pengeluar sertifikat Tidak Pengidentifikasi unik IdP OpenID Connect. Nilai metadata penerbit lebih diutamakan daripada issuer yang ditentukan di titik akhir konfigurasi terkenal OpenID. Jika ditentukan, Azure AD B2C memeriksa apakah klaim iss dalam token yang dikembalikan oleh penyedia identitas sama dengan yang ditentukan dalam metadata pengeluar.
ProviderName Tidak Nama IdP.
response_types Tidak Jenis respons sesuai dengan spesifikasi OpenID Connect Core 1.0. Kemungkinan nilai: id_token, code, atau token.
response_mode Tidak Metode yang digunakan IdP untuk mengirim hasil kembali ke Azure AD B2C. Nilai yang mungkin: query, form_post (default), atau fragment.
scope Tidak Ruang lingkup permintaan yang ditentukan sesuai dengan spesifikasi OpenID Connect Core 1.0. Seperti openid, profile, dan email.
HttpBinding Tidak Pengikatan HTTP yang diharapkan ke token akses dan mengklaim titik akhir token. Nilai yang mungkin: GET atau POST.
ValidTokenIssuerPrefixes Tidak Kunci yang dapat digunakan untuk masuk ke setiap penyewa saat menggunakan IdP multi-penyewa seperti ID Microsoft Entra.
UsePolicyInRedirectUri Tidak Menunjukkan apakah akan menggunakan kebijakan saat membuat URI pengalihan atau tidak. Saat mengonfigurasi aplikasi di IdP, Anda perlu menentukan URI pengalihan. URI pengalihan mengarah ke Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Jika Anda menentukan true, Anda perlu menambahkan URI pengalihan untuk setiap kebijakan yang Anda gunakan. Contoh: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx Tidak Menunjukkan apakah permintaan ke layanan eksternal harus ditandai sebagai kegagalan jika kode status Http berada dalam rentang 5xx. Defaultnya adalah false.
DiscoverMetadataByTokenIssuer Tidak Menunjukkan apakah metadata OIDC harus ditemukan menggunakan pengeluar sertifikat dalam token JWT. Jika Anda perlu membangun URL titik akhir metadata berdasarkan pengeluar sertifikat, atur ini ke true.
IncludeClaimResolvingInClaimsHandling Tidak Untuk klaim input dan output, menentukan apakah resolusi klaim disertakan dalam profil teknis atau tidak. Kemungkinan nilai: true, atau false (default). Jika Anda ingin menggunakan penyelesai klaim di profil teknis, atur ini ke true.
token_endpoint_auth_method Tidak Menentukan cara Azure AD B2C mengirim header autentikasi ke titik akhir token. Nilai yang mungkin: client_secret_post (default), dan client_secret_basic, private_key_jwt. Untuk informasi selengkapnya, lihat bagian autentikasi klien OpenID Connect.
token_signing_algorithm Tidak Menentukan algoritma penandatanganan yang akan digunakan ketika token_endpoint_auth_method diatur ke private_key_jwt. Nilai yang mungkin: RS256 (default) atau RS512.
SingleLogoutEnabled Tidak Menunjukkan apakah selama rincian masuk profil teknis mencoba untuk keluar dari IdP yang terfederasi. Untuk informasi selengkapnya, lihat Sesi keluar Azure AD B2C. Nilai yang mungkin: true (default), atau false.
ReadBodyClaimsOnIdpRedirect Tidak Atur ke true untuk membaca klaim dari badan respons pada pengalihan IdP. Metadata ini digunakan dengan ID Apple, dengan klaim kembali dalam payload respons.
<Metadata>
  <Item Key="ProviderName">https://login.live.com</Item>
  <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
  <Item Key="response_types">code</Item>
  <Item Key="response_mode">form_post</Item>
  <Item Key="scope">openid profile email</Item>
  <Item Key="HttpBinding">POST</Item>
  <Item Key="UsePolicyInRedirectUri">false</Item>
  <Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>

Elemen antarmuka pengguna

Setelan berikut ini bisa digunakan untuk mengonfigurasi pesan galat yang ditampilkan setelah kegagalan. Metadata harus dikonfigurasi di profil teknis OpenID Connect. Pesan kesalahan dapat dilokalkan.

Atribut Diperlukan Deskripsi
UserMessageIfClaimsPrincipalDoesNotExist Tidak Pesan untuk ditampilkan kepada pengguna jika akun dengan nama pengguna yang disediakan tidak ditemukan di direktori.
UserMessageIfInvalidPassword Tidak Pesan untuk ditampilkan kepada pengguna jika kata sandi salah.
UserMessageIfOldPasswordUsed Tidak Pesan untuk ditampilkan kepada pengguna jika kata sandi lama digunakan.

Kunci kriptografi

Elemen CryptographicKeys berisi atribut berikut:

Atribut Diperlukan Deskripsi
client_secret Ya Rahasia klien dari aplikasi IdP. Kunci kriptografi ini diperlukan hanya jika metadata response_types disetel ke code dan token_endpoint_auth_method disetel ke client_secret_post atau client_secret_basic. Dalam hal ini, Azure AD B2C melakukan panggilan lain untuk menukar kode otorisasi dengan token akses. Jika metadata diatur ke id_token Anda dapat menghilangkan kunci kriptografi.
assertion_signing_key Ya Kunci privat RSA yang akan digunakan untuk menandatangani pernyataan klien. Kunci kriptografi ini diperlukan hanya jika metadata token_endpoint_auth_method disetel ke private_key_jwt.

URI Pengalihan

Saat Anda mengonfigurasi URI pengalihan IdP Anda, masukkan https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Pastikan untuk mengganti {your-tenant-name} dengan nama penyewa Anda. URI pengalihan harus menggunakan huruf kecil semua.

Contoh: