Comportamento de prompt com MSAL.js

MSAL.js permite passar um valor de prompt como parte de seus métodos de solicitação de logon ou token. Com base no cenário do aplicativo, você pode personalizar o comportamento de prompt do Microsoft Entra para uma solicitação definindo o parâmetro de prompt no objeto de solicitação:

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

Valores de prompt com suporte

Os seguintes valores de prompt podem ser usados ao autenticar com o plataforma de identidade da Microsoft:

Parâmetro Comportamento
login Força o usuário a inserir suas credenciais na solicitação, negando o logon único.
none Garante que o usuário não receba nenhum prompt interativo. Se a solicitação não puder ser concluída silenciosamente usando o logon único, a plataforma de identidade da Microsoft retornará um erro login_required ou interaction_required.
consent Dispara a caixa de diálogo de consentimento do OAuth depois que o usuário se conecta, solicitando que ele conceda permissões ao aplicativo.
select_account Interrompe o logon único, fornecendo uma experiência de seleção de conta, listando todas as contas na sessão ou uma opção para escolher uma conta totalmente diferente.
create Dispara uma caixa de diálogo de inscrição que permite que usuários externos criem uma conta. Para obter mais informações, consulte: Inscrição por autoatendimento

O MSAL.js gerará um erro invalid_prompt para quaisquer valores de prompt sem suporte:

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

Valores de prompt padrão

O seguinte mostra os valores de prompt padrão que MSAL.js usa:

método MSAL.js Prompt padrão Prompts permitidos
loginPopup N/D Qualquer
loginRedirect N/D Qualquer
ssoSilent none N/A (ignorado)
acquireTokenPopup N/D Qualquer
acquireTokenRedirect N/D Qualquer
acquireTokenSilent none N/A (ignorado)

Observação

Observe que o prompt é um parâmetro no nível do protocolo e sinaliza o comportamento de autenticação desejado para o provedor de identidade. Ele não afeta o comportamento do MSAL.js e o MSAL.js não tem controle sobre como o serviço lidará com a solicitação. Na maioria das circunstâncias, a ID do Microsoft Entra tentará atender à solicitação. Se isso não for possível, ele poderá retornar uma resposta de erro ou ignorar completamente o valor de prompt fornecido.

Solicitações interativas com prompt=none

Geralmente, quando você precisar fazer uma solicitação silenciosa, use um método de MSAL.js silencioso (ssoSilent e acquireTokenSilent) e manipule quaisquer erros de login_required ou de interaction_required com um método interativo (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect).

Em alguns casos, no entanto, o valor none do prompt pode ser usado junto com um método de MSAL.js interativo para obter a autenticação silenciosa. Por exemplo, devido às restrições de cookie de terceiros em alguns navegadores, as solicitações ssoSilent falharão apesar de uma sessão de usuário ativa com a ID do Microsoft Entra. Como um remédio, você pode passar o valor none do prompt para uma solicitação interativa, como loginPopup. O MSAL.js abrirá uma janela pop-up para a ID do Microsoft Entra, e a ID do Microsoft Entra honrará o valor do prompt utilizando o cookie de sessão existente. Nesse caso, o usuário verá uma breve janela pop-up, mas não será solicitada uma entrada de credencial.

Próximas etapas