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.