Masuk ke web dengan OpenID Connect di Azure Active Directory B2C

OpenID Connect adalah protokol autentikasi, yang dibangun di atas OAuth 2.0 yang dapat digunakan untuk memasukkan pengguna dengan aman ke aplikasi web. Dengan menggunakan implementasi Azure Active Directory B2C (Azure AD B2C) dari OpenID Koneksi, Anda dapat mengalihdayakan pengalaman pendaftaran, masuk, dan manajemen identitas lainnya di aplikasi web Anda ke ID Microsoft Entra. Panduan ini menunjukkan kepada Anda cara melakukannya dengan bahasa pemrogaman yang mandiri. Panduan ini menjelaskan cara mengirim dan menerima pesan HTTP tanpa menggunakan perpustakaan sumber terbuka kami.

Catatan

Sebagian besar pustaka autentikasi sumber terbuka memperoleh dan memvalidasi token JWT untuk aplikasi Anda. Sebaiknya jelajahi opsi tersebut, daripada menerapkan kode Anda sendiri. Untuk informasi selengkapnya, lihat Gambaran Umum Pustaka Autentikasi Microsoft (MSAL),dan pustaka autentikasi Web Identitas Microsoft.

OpenID Connect memperluas protokol otorisasi OAuth 2.0 untuk digunakan sebagai protokol autentikasi. Protokol autentikasi ini memungkinkan Anda melakukan SSO. Ini memperkenalkan konsep token ID, yang memungkinkan klien untuk memverifikasi identitas pengguna dan mendapatkan informasi profil dasar tentang pengguna.

OpenID Koneksi juga memungkinkan aplikasi memperoleh token akses dengan aman. Anda dapat menggunakan token akses untuk mengakses sumber daya yang diamankan server otorisasi. Kami merekomendasikan OpenID Koneksi jika Anda membangun aplikasi web yang Anda host di server dan diakses melalui browser. Untuk informasi selengkapnya tentang token, lihat gambaran umum token di Azure Active Directory B2C

Azure AD B2C memperluas protokol standar OpenID Connect untuk melakukan lebih dari autentikasi dan otorisasi sederhana. Ini memperkenalkan parameter alur pengguna, yang memungkinkan Anda menggunakan OpenID Connect untuk menambahkan pengalaman pengguna ke aplikasi Anda, seperti pendaftaran, masuk, dan manajemen profil.

Kirim permintaan autentikasi

Ketika aplikasi web Anda perlu mengautentikasi pengguna dan menjalankan alur pengguna, aplikasi web tersebut dapat mengarahkan pengguna ke titik akhir /authorize. Pengguna mengambil langkah sesuai dengan alur pengguna.

Dalam permintaan ini, klien menunjukkan izin yang diperlukan dari pengguna dalam parameter scope, dan menentukan alur pengguna untuk dijalankan. Untuk merasakan cara kerja permintaan, tempelkan permintaan ke browser Anda dan jalankan. Ganti:

  • {tenant} dengan nama penyewa Anda.
  • 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 dengan ID aplikasi aplikasi yang Anda daftarkan di penyewa Anda.
  • {application-id-uri}/{scope-name} dengan URI ID Aplikasi dan cakupan aplikasi yang Anda daftarkan di penyewa Anda.
  • {policy} dengan nama kebijakan yang Anda miliki di penyewa Anda, misalnya b2c_1_sign_in.
GET /{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
Host: {tenant}.b2clogin.com

client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&response_type=code+id_token
&redirect_uri=https%3A%2F%2Fjwt.ms%2F
&response_mode=fragment
&scope=openid%20offline_access%20{application-id-uri}/{scope-name}
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
Parameter Wajib Deskripsi
{tenant} Ya Nama penyewa AAD B2C Anda. Jika Anda menggunakan domain kustom, ganti tenant.b2clogin.com dengan domain Anda, seperti fabrikam.com.
{policy} Ya Alur atau kebijakan pengguna yang dijalankan aplikasi. Tentukan nama alur pengguna yang Anda buat di penyewa Azure AD B2C Anda. Misalnya: b2c_1_sign_in, b2c_1_sign_up, atau b2c_1_edit_profile.
client_id Ya ID aplikasi yang ditetapkan portal Microsoft Azure ke aplikasi Anda.
nonce Ya Nilai yang tercantum dalam permintaan (dibuat oleh aplikasi) yang disertakan dalam token ID yang dihasilkan sebagai klaim. Aplikasi kemudian dapat memverifikasi nilai ini untuk meminimalkan serangan replay token. Biasanya, nilainya adalah string acak dan unik yang dapat digunakan untuk mengidentifikasi asal permintaan.
response_type Ya Harus menyertakan token ID untuk OpenID Connect. Jika aplikasi web Anda juga memerlukan token untuk memanggil API web, Anda dapat menggunakan code+id_token.
cakupan Ya Daftar cakupan yang dipisahkan spasi. cakupan openid menunjukkan izin untuk masuk ke pengguna dan mendapatkan data tentang pengguna dalam bentuk token ID. Cakupan offline_access bersifat opsional untuk aplikasi web. Ini menunjukkan bahwa aplikasi Anda memerlukan token refresh untuk akses yang diperluas ke sumber daya. https://{tenant-name}/{app-id-uri}/{scope} menunjukkan izin ke sumber daya yang dilindungi, seperti API web. Untuk informasi selengkapnya, lihat Meminta token akses.
perintah Tidak Jenis interaksi pengguna yang Anda butuhkan. Satu-satunya nilai yang valid saat ini adalah login, yang memaksa pengguna untuk memasukkan kredensial mereka pada permintaan itu.
redirect_uri Ya Parameter redirect_uri aplikasi Anda, tempat server mengirim respons autentikasi ke aplikasi Anda. Ini harus sama persis dengan salah satu parameter redirect_uri yang Anda daftarkan di portal Microsoft Azure, kecuali hal itu memang harus dikodekan dengan URL.
response_mode Tidak Metode yang digunakan untuk mengirim kode otorisasi yang dihasilkan kembali ke aplikasi Anda. Bisa jadi query, form_post, atau fragment. Kami menyarankan Anda menggunakan form_post mode respons untuk keamanan terbaik.
state Tidak Nilai yang dapat Anda sertakan dalam permintaan yang dikembalikan server otorisasi dalam respons token. Ini bisa berupa string dari konten apa pun yang ingin Anda gunakan. Nilai unik yang dihasilkan secara acak biasanya digunakan untuk mencegah serangan pemalsuan permintaan lintas situs. Status ini juga digunakan untuk menyandikan informasi tentang status pengguna di aplikasi sebelum permintaan autentikasi muncul, seperti halaman tempat mereka berada. Jika tidak ingin mendaftarkan beberapa URL pengalihan di portal Microsoft Azure, Anda dapat menggunakan state parameter untuk membedakan respons di aplikasi anda dari layanan Azure AD B2C karena permintaan yang berbeda.
login_hint Tidak Dapat digunakan untuk mengisi bidang nama masuk sebelumnya dari halaman masuk. Untuk informasi selengkapnya, lihat Pengisian awal nama rincian masuk.
petunjuk domain Tidak Memberikan petunjuk kepada AAD B2C tentang IdP sosial yang harus digunakan untuk rincian masuk. Jika nilai yang valid disertakan, pengguna langsung masuk ke halaman rincian masuk IdP. Untuk informasi selengkapnya, lihat Mengalihkan rincian masuk ke penyedia sosial.
Parameter kustom Tidak Parameter kustom yang dapat digunakan dengan kebijakan kustom. Misalnya, konten halaman kustom dinamis URI, atau pemecah klaim nilai kunci.

Pada tahap ini, pengguna diminta untuk menyelesaikan alur kerja. Pengguna mungkin harus memasukkan nama pengguna dan kata sandi mereka, masuk dengan identitas sosial, atau mendaftar ke direktori. Mungkin ada sejumlah langkah lain tergantung pada bagaimana aliran pengguna ditentukan.

Setelah pengguna menyelesaikan alur pengguna, respons dikembalikan ke aplikasi Anda pada parameter yang ditunjukkan redirect_uri , dengan menggunakan metode yang Anda tentukan dalam response_mode parameter . Responsnya sama untuk masing-masing kasus sebelumnya, independen dari aliran pengguna.

Respons yang berhasil menggunakan response_mode=fragment akan terlihat seperti:

GET https://jwt.ms/#
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=arbitrary_data_you_can_receive_in_the_response
Parameter Deskripsi
id_token Token ID yang diminta aplikasi. Anda dapat menggunakan token ID untuk memverifikasi identitas pengguna dan memulai sesi dengan pengguna.
code Kode otorisasi yang diminta aplikasi, jika Anda menggunakan response_type=code+id_token. Aplikasi dapat menggunakan kode otorisasi untuk meminta token akses untuk sumber daya target. Kode otorisasi biasanya kedaluwarsa setelah sekitar 10 menit.
state Jika parameter state disertakan dalam permintaan, maka nilai yang sama akan muncul dalam respons. Aplikasi harus memverifikasi bahwa nilai state dalam permintaan dan respons identik.

Respons kesalahan juga dapat dikirim ke parameter redirect_uri sehingga aplikasi dapat menanganinya dengan tepat:

GET https://jwt.ms/#
error=access_denied
&error_description=AADB2C90091%3a+The+user+has+cancelled+entering+self-asserted+information.%0d%0aCorrelation+ID%3a+xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%0d%0aTimestamp%3a+xxxx-xx-xx+xx%3a23%3a27Z%0d%0a
&state=arbitrary_data_you_can_receive_in_the_response
Parameter Deskripsi
kesalahan String kode yang dapat digunakan untuk mengklasifikasikan jenis kesalahan yang terjadi.
error_description Pesan kesalahan khusus yang dapat membantu Anda mengidentifikasi penyebab kesalahan autentikasi.
state Jika parameter state disertakan dalam permintaan, maka nilai yang sama akan muncul dalam respons. Aplikasi harus memverifikasi bahwa nilai state dalam permintaan dan respons identik.

Memvalidasi token ID

Hanya menerima token ID tidak cukup untuk mengautentikasi pengguna. Validasi tanda tangan token ID, dan verifikasi klaim dalam token sesuai yang diminta oleh aplikasi Anda. Azure AD B2C menggunakan JSON Web Tokens (JWTs) dan kriptografi kunci umum untuk menandatangani token dan memverifikasi keabsahannya.

Catatan

Sebagian besar pustaka autentikasi sumber terbuka memvalidasi token JWT untuk aplikasi Anda. Sebaiknya jelajahi opsi tersebut, daripada menerapkan logika validasi Anda sendiri. Untuk informasi selengkapnya, lihat Gambaran Umum Pustaka Autentikasi Microsoft (MSAL),dan pustaka autentikasi Web Identitas Microsoft.

Azure AD B2C memiliki titik akhir metadata OpenID Connect, yang memungkinkan aplikasi untuk mendapatkan informasi tentang Azure AD B2C pada saat runtime. Informasi ini meliputi titik akhir, konten token, dan kunci penandatanganan token. Ada dokumen metadata JSON untuk setiap alur pengguna di penyewa B2C Anda. Misalnya, dokumen metadata untuk b2c_1_sign_in alur pengguna fabrikamb2c.onmicrosoft.com berada di:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/v2.0/.well-known/openid-configuration

Salah satu properti dokumen konfigurasi ini adalah jwks_uri, yang nilainya untuk aliran pengguna yang sama adalah:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/discovery/v2.0/keys

Untuk menentukan alur pengguna mana yang digunakan untuk menandatangani token ID, Anda memiliki dua opsi. Pertama, nama alur pengguna disertakan dalam acr klaim di token ID, lihat klaim yang mewakili alur pengguna. Pilihan Anda yang lain adalah menyandikan aliran pengguna dalam nilai parameter state saat Anda mengeluarkan permintaan, lalu mendekodenya untuk menentukan aliran pengguna mana yang digunakan. Masing-masing metode tersebut dapat digunakan.

Setelah Anda memperoleh dokumen metadata dari titik akhir metadata OpenID Koneksi, Anda dapat menggunakan kunci umum RSA 256 untuk memvalidasi tanda tangan token ID. Mungkin akan ada beberapa kunci yang tercantum di titik akhir ini, masing-masing diidentifikasi oleh klaim kid. Header token ID juga berisi klaim kid, yang menunjukkan kunci mana yang digunakan untuk menandatangani token ID.

Untuk memverifikasi token dari Azure AD B2C, Anda perlu membuat kunci umum menggunakan eksponen(e) dan modulus(n). Untuk melakukannya, Anda perlu mempelajari cara menghasilkan kunci umum dalam bahasa pemrograman pilihan Anda. Dokumentasi resmi tentang pembuatan Kunci Umum dengan protokol RSA dapat ditemukan di sini: https://tools.ietf.org/html/rfc3447#section-3.1

Setelah Anda memvalidasi tanda tangan token ID, ada berbagai klaim yang perlu Anda verifikasi. Contohnya:

  • Memvalidasi klaim nonce untuk mencegah serangan replay token. Nilainya harus sesuai dengan yang Anda buat dalam permintaan masuk.
  • Memvalidasi klaim aud untuk memastikan bahwa token ID telah dikeluarkan untuk aplikasi Anda. Nilainya akan menjadi ID aplikasi pada aplikasi Anda.
  • Memvalidasi klaim iat dan exp untuk memastikan bahwa token ID belum kedaluwarsa.

Ada juga beberapa validasi lagi yang harus Anda lakukan. Validasi dijelaskan secara rinci dalam OpenID Koneksi Core Spec. Anda mungkin juga ingin memvalidasi lebih banyak klaim, tergantung pada skenario Anda. Beberapa validasi umum meliputi:

  • Pastikan pengguna/organisasi mendaftar untuk aplikasi.
  • Pastikan bahwa pengguna memiliki otorisasi/hak istimewa yang tepat.
  • Pastikan bahwa kekuatan autentikasi tertentu telah terjadi, seperti autentikasi multifaktor Microsoft Entra.

Setelah token ID divalidasi, Anda dapat memulai suatu sesi dengan pengguna. Anda dapat menggunakan klaim dalam token ID untuk mendapatkan informasi tentang pengguna di aplikasi Anda. Penggunaan untuk informasi ini termasuk tampilan, rekaman, dan otorisasi.

Mendapatkan token

Jika Anda memerlukan aplikasi web untuk hanya menjalankan alur pengguna, Anda dapat melewati beberapa bagian berikutnya. Bagian-bagian ini hanya berlaku untuk aplikasi web yang perlu melakukan panggilan terautentikasi ke API web, yang dilindungi oleh Azure AD B2C itu sendiri.

Anda dapat menukarkan kode otorisasi yang Anda peroleh (dengan menggunakan response_type=code+id_token) untuk token ke sumber daya yang diinginkan dengan mengirim permintaan POST ke titik akhir /token. Di Azure AD B2C, Anda dapat meminta token akses untuk API lain seperti biasa dengan menentukan cakupannya dalam permintaan.

Anda juga dapat meminta token akses untuk API Web back-end aplikasi Anda sendiri. Dalam hal ini, Anda menggunakan ID klien aplikasi sebagai cakupan yang diminta, yang menghasilkan token akses dengan ID klien tersebut sebagai "audiens":

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&scope=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Parameter Wajib Deskripsi
{tenant} Ya Nama penyewa Azure AD B2C Anda
{policy} Ya Alur pengguna yang digunakan untuk memperoleh kode otorisasi. Anda tidak dapat menggunakan alur pengguna yang berbeda dalam permintaan ini. Tambahkan parameter ini ke string kueri, bukan ke isi POSTING.
client_id Ya ID aplikasi yang ditetapkan portal Microsoft Azure ke aplikasi Anda.
client_secret Ya, di Aplikasi Web Rahasia aplikasi yang dihasilkan di portal Microsoft Azure. Rahasia klien digunakan dalam alur ini untuk skenario Aplikasi Web, yang kliennya dapat menyimpan rahasia klien dengan aman. Untuk skenario Aplikasi Asli (klien publik), rahasia klien tidak dapat disimpan dengan aman, oleh karena itu tidak digunakan pada alur ini. Jika menggunakan rahasia klien, ubah secara berkala.
code Ya Kode otorisasi yang Anda peroleh di awal alur pengguna.
grant_type Ya Jenis persetujuan, yang harus authorization_code untuk alur kode otorisasi.
redirect_uri Tidak Parameter redirect_uri aplikasi tempat Anda menerima kode otorisasi.
cakupan Tidak Daftar cakupan yang dipisahkan spasi. Cakupan openid menunjukkan izin untuk memasukkan pengguna dan mendapatkan data tentang pengguna dalam bentuk parameter id_token. Ini dapat digunakan untuk mendapatkan token ke API web back-end aplikasi Anda sendiri, yang diwakili oleh ID aplikasi yang sama dengan klien. Cakupan offline_access menunjukkan bahwa aplikasi Anda memerlukan token refresh untuk akses lanjutan ke sumber daya.

Respons token yang sukses terlihat seperti:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "expires_on": "1644254945",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
Parameter Deskripsi
not_before Waktu epoch di mana token menjadi valid.
token_type Nilai jenis token. Bearer adalah satu-satunya tipe yang didukung.
access_token Token JWT tertandatangani yang Anda minta.
cakupan Cakupan yang valid untuk token.
Berakhir dalam Masa berlaku token akses (dalam detik).
expires_on Waktu epoch ketika token akses menjadi tidak valid.
refresh_token Token refresh OAuth 2.0. Aplikasi dapat menggunakan token ini untuk memperoleh lebih banyak token setelah token saat ini kedaluwarsa. Token refresh dapat digunakan untuk mempertahankan akses ke sumber daya untuk jangka waktu yang lama. Cakupan offline_access harus telah digunakan dalam otorisasi dan permintaan token untuk menerima token refresh.

Respons kesalahan terlihat seperti:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90080: The provided grant has expired. Please re-authenticate and try again. Current time: xxxxxxxxxx, Grant issued time: xxxxxxxxxx, Grant expiration time: xxxxxxxxxx\r\nCorrelation ID: xxxxxxxx-xxxx-xxxX-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-16 xx:10:52Z\r\n"
}
Parameter Deskripsi
kesalahan Kode yang digunakan untuk mengklasifikasikan jenis kesalahan yang terjadi.
error_description Pesan kesalahan yang dapat membantu Anda mengidentifikasi akar penyebab kesalahan autentikasi.

Menggunakan token

Setelah berhasil memperoleh token akses, Anda dapat menggunakan token dalam permintaan ke API web back-end Anda dengan menyertakannya di Authorization header:

GET /tasks
Host: mytaskwebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

Refresh token

Token akses dan token ID berumur pendek. Setelah kedaluwarsa, Anda harus me-refresh token untuk terus mengakses sumber daya. Saat Anda merefresh token akses, Azure AD B2C mengembalikan token baru. Token akses yang di-refresh akan diperbarui nbf (tidak sebelumnya), iat (dikeluarkan pada), dan exp (kedaluwarsa) nilai klaim. Semua nilai klaim lainnya mirip dengan yang ada di token akses sebelumnya.

Anda dapat merefresh token dengan mengirimkan permintaan POST lain ke titik akhir /token. Kali ini, sediakan parameter refresh_token alih-alih parameter code:

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&scope=openid offline_access
&refresh_token=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Parameter Wajib Deskripsi
{tenant} Ya Nama penyewa Azure AD B2C Anda
{policy} Ya Alur pengguna yang digunakan untuk memperoleh token refresh asli. Anda tidak dapat menggunakan alur pengguna yang berbeda dalam permintaan ini. Tambahkan parameter ini ke string kueri, bukan ke isi POSTING.
client_id Ya ID aplikasi yang ditetapkan portal Microsoft Azure ke aplikasi Anda.
client_secret Ya, di Aplikasi Web Rahasia aplikasi yang dihasilkan di portal Microsoft Azure. Rahasia klien digunakan dalam alur ini untuk skenario Aplikasi Web, yang kliennya dapat menyimpan rahasia klien dengan aman. Untuk skenario Aplikasi Asli (klien publik), rahasia klien tidak dapat disimpan dengan aman, oleh karena itu tidak digunakan pada panggilan ini. Jika menggunakan rahasia klien, silakan ubah secara berkala.
grant_type Ya Jenis persetujuan, yang harus refresh_token untuk bagian alur kode otorisasi ini.
refresh_token Ya Token refresh asli yang diperoleh di bagian kedua alur. Cakupan offline_access harus digunakan dalam otorisasi dan permintaan token untuk menerima token refresh.
redirect_uri Tidak Parameter redirect_uri aplikasi tempat Anda menerima kode otorisasi.
cakupan Tidak Daftar cakupan yang dipisahkan spasi. cakupan openid menunjukkan izin untuk masuk ke pengguna dan mendapatkan data tentang pengguna dalam bentuk token ID. Ini dapat digunakan untuk mengirimkan token ke API web back-end aplikasi Anda sendiri, yang diwakili oleh ID aplikasi yang sama dengan klien. Cakupan offline_access menunjukkan bahwa aplikasi Anda memerlukan token refresh untuk akses lanjutan ke sumber daya.

Respons token yang sukses terlihat seperti:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
    "refresh_token_expires_in": "1209600"
}
Parameter Deskripsi
not_before Waktu epoch di mana token menjadi valid.
token_type Nilai jenis token. Bearer adalah satu-satunya tipe yang didukung.
access_token Token JWT tertandatangani yang telah diminta.
cakupan Cakupan yang valid untuk token.
Berakhir dalam Masa berlaku token akses (dalam detik).
refresh_token Token refresh OAuth 2.0. Aplikasi dapat menggunakan token ini untuk memperoleh token tambahan setelah token saat ini kedaluwarsa. Token refresh dapat digunakan untuk mempertahankan akses ke sumber daya untuk jangka waktu yang lama.
refresh_token_expires_in Lamanya waktu token refresh valid (dalam hitungan detik).

Respons kesalahan terlihat seperti:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90129: The provided grant has been revoked. Please reauthenticate and try again.\r\nCorrelation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-xx xx:xx:xxZ\r\n",
}
Parameter Deskripsi
kesalahan Kode yang digunakan untuk mengklasifikasikan jenis kesalahan yang terjadi.
error_description Pesan kesalahan yang dapat membantu Anda mengidentifikasi akar penyebab kesalahan autentikasi.

Mengirim permintaan keluar

Ketika Anda ingin mengeluarkan pengguna keluar dari aplikasi, itu tidak cukup untuk menghapus cookie aplikasi atau mengakhiri sesi dengan pengguna. Alihkan pengguna ke Azure AD B2C untuk mengeluarkan. Jika Anda gagal melakukannya, pengguna mungkin dapat mengautentikasi ulang ke aplikasi Anda tanpa memasukkan kredensial mereka lagi. Untuk informasi selengkapnya, lihat perilaku sesi Azure AD B2C.

Untuk mengeluarkan pengguna, alihkan pengguna ke end_session_endpoint yang tercantum dalam dokumen metadata OpenID Connect yang dijelaskan sebelumnya:

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Fjwt.ms%2F
Parameter Wajib Deskripsi
{tenant} Ya Nama penyewa Azure AD B2C Anda. Jika Anda menggunakan domain kustom, ganti tenant.b2clogin.com dengan domain Anda, seperti fabrikam.com.
{policy} Ya Alur pengguna yang Anda tentukan dalam permintaan otorisasi. Misalnya, jika pengguna masuk dengan alur pengguna b2c_1_sign_in, tentukan b2c_1_sign_in di permintaan keluar.
id_token_hint Tidak Token ID yang diterbitkan sebelumnya untuk diteruskan ke titik akhir logout sebagai petunjuk tentang sesi terautentikasi pengguna akhir saat ini dengan klien. id_token_hint memastikan bahwa post_logout_redirect_uri adalah URL balasan yang terdaftar di pengaturan aplikasi Azure AD B2C Anda. Untuk informasi selengkapnya, lihat Mengamankan pengalihan logout Anda.
client_id Tidak* ID aplikasi yang ditetapkan portal Microsoft Azure ke aplikasi Anda.

*Ini diperlukan saat menggunakan konfigurasi SSO isolasi Application dan Memerlukan Token ID dalam permintaan logout diatur ke No.
post_logout_redirect_uri Tidak URL pengalihan yang harus dituju pengguna setelah ia berhasil keluar. Jika tidak disertakan, maka Azure AD B2C akan menampilkan pesan generik kepada pengguna. Kecuali Anda memberikan id_token_hint, Anda tidak boleh mendaftarkan URL ini sebagai URL balasan di pengaturan aplikasi Azure AD B2C Anda.
state Tidak Jika Anda menyertakan state parameter dalam permintaan otorisasi, server otorisasi mengembalikan nilai yang sama dalam respons terhadap post_logout_redirect_uri. Aplikasi harus memverifikasi bahwa state nilai dalam permintaan dan respons identik.

Atas permintaan keluar, Azure AD B2C membatalkan sesi berbasis cookie Azure AD B2C, dan mencoba untuk keluar dari federasi penyedia identitas. Untuk informasi selengkapnya, lihat Single sign-out.

Mengamankan pengalihan keluar Anda

Setelah keluar, pengguna dialihkan ke URI yang Anda tentukan dalam post_logout_redirect_uri parameter, terlepas dari URL balasan yang Anda tentukan untuk aplikasi. Namun, jika valid id_token_hint dilewatkan, dan Memerlukan Token Id dalam permintaan logout diaktifkan, Azure AD B2C memverifikasi bahwa nilai post_logout_redirect_uri sesuai dengan salah satu URI pengalihan yang dikonfigurasi aplikasi sebelum melakukan pengalihan. Jika tidak ada URL balasan yang cocok yang dikonfigurasi untuk aplikasi, pesan kesalahan ditampilkan dan pengguna tidak dialihkan.

Untuk mengatur Token ID yang diperlukan dalam permintaan logout, lihat Mengonfigurasi perilaku sesi di Azure Active Directory B2C.

Langkah berikutnya