Поделиться через


Поведение запроса с помощью 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, , ). acquireTokenRedirectacquireTokenPopupacquireTokenSilent

Однако в некоторых случаях значение none запроса можно использовать вместе с интерактивным методом MSAL.js для обеспечения автоматической проверки подлинности. Например, из-за ограничений сторонних файлов cookie в некоторых браузерах ssoSilent запросы завершаются ошибкой, несмотря на активный сеанс пользователя с идентификатором Microsoft Entra. В качестве средства защиты можно передать значение none запроса интерактивному запросу, например loginPopup. MSAL.js откроет всплывающее окно с идентификатором Microsoft Entra ID, а идентификатор Microsoft Entra id будет учитывать значение запроса, используя существующий файл cookie сеанса. В этом случае пользователь увидит краткое всплывающее окно, но не будет предложено ввести запись учетных данных.

Следующие шаги