Bagikan melalui


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, acquireTokenPopupacquireTokenRedirect). 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.

Langkah berikutnya