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


Поведение запроса с помощью 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 попытается выполнить запрос. Если это невозможно, он может вернуть ответ на ошибку или полностью игнорировать заданное значение запроса.

Интерактивные запросы с параметром без запроса

Как правило, если требуется выполнить тихий запрос, используйте тихий метод MSAL.js (ssoSilent, acquireTokenSilent) и обрабатывайте любые ошибки login_required или interaction_required с помощью интерактивного метода (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect).

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

Дальнейшие действия