Perilaku prompt dengan MSAL.js
MSAL.js memungkinkan meneruskan nilai prompt sebagai bagian dari metode permintaan masuk atau tokennya. Berdasarkan skenario aplikasi, Anda dapat menyesuaikan perilaku permintaan Microsoft Entra untuk permintaan dengan mengatur parameter prompt di objek permintaan:
import { PublicClientApplication } from "@azure/msal-browser";
const pca = new PublicClientApplication({
auth: {
clientId: "YOUR_CLIENT_ID"
}
});
const loginRequest = {
scopes: ["user.read"],
prompt: 'select_account',
}
pca.loginPopup(loginRequest)
.then(response => {
// do something with the response
})
.catch(error => {
// handle errors
});
Nilai perintah yang didukung
Nilai perintah berikut dapat digunakan saat mengautentikasi dengan platform identitas Microsoft:
Parameter | Perilaku |
---|---|
login |
Memaksa pengguna untuk memasukkan kredensial mereka pada permintaan tersebut, menilai akses menyeluruh. |
none |
Memastikan bahwa pengguna tidak disajikan dengan perintah interaktif apa pun. Jika permintaan tidak dapat diselesaikan secara diam-diam dengan menggunakan akses menyeluruh, platform identitas Microsoft mengembalikan kesalahan login_required atau interaction_required. |
consent |
Memicu dialog persetujuan OAuth setelah pengguna masuk, meminta pengguna untuk memberikan izin ke aplikasi. |
select_account |
Mengganggu akses menyeluruh dengan memberikan pengalaman pemilihan akun yang mencantumkan semua akun dalam sesi atau opsi untuk memilih akun yang berbeda sama sekali. |
create |
Memicu dialog pendaftaran yang memungkinkan pengguna eksternal membuat akun. Untuk informasi selengkapnya, lihat: Pendaftaran layanan mandiri |
MSAL.js akan melemparkan kesalahan invalid_prompt
untuk nilai prompt yang tidak didukung:
invalid_prompt_value: Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest Given value: my_custom_prompt
Nilai perintah default
Berikut ini memperlihatkan nilai perintah default yang digunakan MSAL.js:
Metode MSAL.js | Perintah default | Perintah yang diizinkan |
---|---|---|
loginPopup |
T/A | Mana pun |
loginRedirect |
T/A | Mana pun |
ssoSilent |
none |
N/A (diabaikan) |
acquireTokenPopup |
T/A | Mana pun |
acquireTokenRedirect |
T/A | Mana pun |
acquireTokenSilent |
none |
N/A (diabaikan) |
Catatan
Perhatikan bahwa prompt adalah parameter tingkat protokol dan menandakan perilaku autentikasi yang diinginkan ke penyedia identitas. Ini tidak memengaruhi perilaku MSAL.js dan MSAL.js tidak memiliki kontrol atas bagaimana layanan pada akhirnya akan menangani permintaan. Dalam kebanyakan keadaan, ID Microsoft Entra akan mencoba untuk mematuhi permintaan. Jika ini tidak memungkinkan, ini dapat mengembalikan respons kesalahan, atau sepenuhnya mengabaikan nilai prompt yang diberikan.
Permintaan interaktif dengan prompt=none
Umumnya, ketika Anda perlu membuat permintaan senyap, gunakan metode MSAL.js senyap (ssoSilent
, ), dan tangani kesalahan login_required atau interaction_required dengan metode interaktif (loginPopup
, , loginRedirect
, acquireTokenPopup
acquireTokenRedirect
). acquireTokenSilent
Namun, dalam beberapa kasus, nilai none
prompt dapat digunakan bersama dengan metode MSAL.js interaktif untuk mencapai autentikasi senyap. Misalnya, karena pembatasan cookie pihak ketiga di beberapa browser, ssoSilent
permintaan akan gagal meskipun sesi pengguna aktif dengan ID Microsoft Entra. Sebagai obat, Anda dapat meneruskan nilai none
prompt ke permintaan interaktif seperti loginPopup
. MSAL.js kemudian akan membuka jendela popup ke ID Microsoft Entra dan ID Microsoft Entra akan menghormati nilai prompt dengan menggunakan cookie sesi yang ada. Dalam hal ini, pengguna akan melihat jendela popup singkat tetapi tidak akan dimintai entri kredensial.