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: