使用 MSAL.js 提示行為

MSAL.js 允許在其登入或權杖要求方法中傳遞提示值。 根據您的應用程式案例,您可以在要求物件 設定 提示參數,以自訂要求的 Microsoft Entra 提示 行為:

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
    });

支援的提示值

使用 Microsoft 身分識別平臺 進行驗證時,可以使用下列提示值:

參數 行為
login 強制使用者在該要求上輸入其認證,否定單一登入。
none 確保使用者未顯示任何互動式提示。 如果無法使用單一 登錄以無訊息方式完成要求,Microsoft 身分識別平臺會傳回login_required interaction_required 錯誤。
consent 在使用者登入之後觸發 OAuth 同意對話方塊,要求使用者將許可權授與應用程式。
select_account 藉由提供帳戶選擇體驗來中斷單一登入,列出會話中的所有帳戶,或選擇完全選擇不同帳戶的選項。
create 觸發註冊對話方塊,允許外部使用者建立帳戶。 如需詳細資訊,請參閱: 自助式註冊

MSAL.js 會針對任何不支援的提示值擲回 invalid_prompt 錯誤:

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

預設提示值

下列顯示 MSAL.js 使用的預設提示值:

MSAL.js 方法 預設提示 允許的提示
loginPopup N/A 任意
loginRedirect N/A 任意
ssoSilent none N/A (忽略)
acquireTokenPopup N/A 任意
acquireTokenRedirect N/A 任意
acquireTokenSilent none N/A (忽略)

注意

請注意, 提示 是通訊協定層級參數,並將所需的驗證行為發出訊號給識別提供者。 這不會影響 MSAL.js 行為,而且 MSAL.js 無法控制服務最終處理要求的方式。 在大部分情況下,Microsoft Entra ID 會嘗試接受要求。 如果無法這樣做,可能會傳回錯誤回應,或完全忽略指定的提示值。

具有 prompt=none 的互動式要求

一般而言,當您需要提出無訊息要求時,請使用無訊息 MSAL.js 方法 (, ), 並使用互動式方法 # ssoSilentloginRedirectacquireTokenPopupacquireTokenRedirectloginPopup 來處理任何 login_required interaction_required 錯誤。 acquireTokenSilent

不過,在某些情況下,提示值 none 可以與互動式 MSAL.js 方法搭配使用,以達成無訊息驗證。 例如,由於某些瀏覽器中的協力廠商 Cookie 限制,要求會失敗, ssoSilent 儘管有 Microsoft Entra ID 的作用中使用者會話。 作為補救方式,您可以將提示值 none 傳遞至互動式要求,例如 loginPopup 。 MSAL.js 接著會開啟 Microsoft Entra ID 的快顯視窗,而 Microsoft Entra ID 會利用現有的會話 Cookie 來接受提示值。 在此情況下,使用者會看到簡短的快顯視窗,但不會提示輸入認證專案。

下一步