Поведение запроса с помощью 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
});
Поддерживаемые значения запроса
При проверке подлинности с помощью платформа удостоверений Майкрософт можно использовать следующие значения запроса:
Параметр | Поведение |
---|---|
login |
Заставляет пользователя вводить свои учетные данные в этом запросе, отрицая единый вход. |
none |
Гарантирует, что пользователь не отображает интерактивный запрос. Если запрос не может быть выполнен автоматически с помощью единого входа, платформа удостоверений Майкрософт возвращает ошибку 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 |
Н/П | Любое |
loginRedirect |
Н/П | Любое |
ssoSilent |
none |
N/A (игнорируется) |
acquireTokenPopup |
Н/П | Любое |
acquireTokenRedirect |
Н/П | Любое |
acquireTokenSilent |
none |
N/A (игнорируется) |
Примечание.
Обратите внимание, что запрос является параметром уровня протокола и сигнализирует о требуемом поведении проверки подлинности поставщику удостоверений. Это не влияет на поведение MSAL.js, и MSAL.js не имеет контроля над тем, как служба в конечном итоге будет обрабатывать запрос. В большинстве случаев идентификатор Microsoft Entra попытается выполнить запрос. Если это невозможно, он может вернуть ответ на ошибку или полностью игнорировать заданное значение запроса.
Интерактивные запросы с запросом=none
Как правило, если требуется выполнить автоматический запрос, используйте метод MSAL.js (ssoSilent
,), а также обрабатывайте любые login_required или interaction_required ошибки с помощью интерактивного метода (loginPopup
, loginRedirect
, , ). acquireTokenRedirect
acquireTokenPopup
acquireTokenSilent
Однако в некоторых случаях значение none
запроса можно использовать вместе с интерактивным методом MSAL.js для обеспечения автоматической проверки подлинности. Например, из-за ограничений сторонних файлов cookie в некоторых браузерах ssoSilent
запросы завершаются ошибкой, несмотря на активный сеанс пользователя с идентификатором Microsoft Entra. В качестве средства защиты можно передать значение none
запроса интерактивному запросу, например loginPopup
. MSAL.js откроет всплывающее окно с идентификатором Microsoft Entra ID, а идентификатор Microsoft Entra id будет учитывать значение запроса, используя существующий файл cookie сеанса. В этом случае пользователь увидит краткое всплывающее окно, но не будет предложено ввести запись учетных данных.