使用 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 方法 (, ), 並使用互動式方法 # ssoSilent
、 loginRedirect
acquireTokenPopup
acquireTokenRedirect
loginPopup
來處理任何 login_required 或 interaction_required 錯誤。 acquireTokenSilent
不過,在某些情況下,提示值 none
可以與互動式 MSAL.js 方法搭配使用,以達成無訊息驗證。 例如,由於某些瀏覽器中的協力廠商 Cookie 限制,要求會失敗, ssoSilent
儘管有 Microsoft Entra ID 的作用中使用者會話。 作為補救方式,您可以將提示值 none
傳遞至互動式要求,例如 loginPopup
。 MSAL.js 接著會開啟 Microsoft Entra ID 的快顯視窗,而 Microsoft Entra ID 會利用現有的會話 Cookie 來接受提示值。 在此情況下,使用者會看到簡短的快顯視窗,但不會提示輸入認證專案。