Comportement d’invite avec MSAL.js
MSAL.js permet de transmettre une valeur d’invite dans le cadre de ses méthodes de demande de connexion ou de jeton. En fonction de votre scénario d'application, vous pouvez personnaliser le comportement de l'invite Microsoft Entra pour une requête en définissant le paramètre d'invite dans l'objet de requête :
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
});
Valeurs d’invite prises en charge
Les valeurs d’invite suivantes peuvent être utilisées lors de l’authentification auprès de la Plateforme d’identités Microsoft :
Paramètre | Comportement |
---|---|
login |
Oblige l’utilisateur à saisir ses informations d’identification lors de cette demande, annulant de fait l’authentification unique. |
none |
Veille à ce que l’utilisateur ne reçoive aucune invite interactive. Si la demande ne peut pas être exécutée en mode silencieux via l’authentification unique, la Plateforme d’identités Microsoft renvoie l’erreur login_required ou interaction_required. |
consent |
Déclenche l’affichage de la boîte de dialogue de consentement OAuth après la connexion de l’utilisateur, afin de lui demander d’octroyer des autorisations à l’application. |
select_account |
Interrompt l’authentification unique en fournissant une expérience de sélection de compte qui répertorie tous les comptes de la session, ou une option permettant de choisir un autre compte. |
create |
Déclenche une boîte de dialogue d’inscription permettant aux utilisateurs externes de créer un compte. Pour plus d’informations, consultez : Inscription en libre-service |
MSAL.js génère l’erreur invalid_prompt
pour toute valeur d’invite non prise en charge :
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
Valeurs d’invite par défaut
Les valeurs d’invite par défaut utilisées par MSAL.js sont les suivantes :
Méthode MSAL.js | Invite par défaut | Invites autorisées |
---|---|---|
loginPopup |
N/A | Quelconque |
loginRedirect |
N/A | Quelconque |
ssoSilent |
none |
N/A (ignoré) |
acquireTokenPopup |
N/A | Quelconque |
acquireTokenRedirect |
N/A | Quelconque |
acquireTokenSilent |
none |
N/A (ignoré) |
Notes
Notez que prompt est un paramètre de niveau protocole qui signale le comportement d’authentification souhaité au fournisseur d’identité. Il n’affecte pas le comportement MSAL.js, et MSAL.js n’a pas le contrôle sur la façon dont le service va traiter la demande. Dans la plupart des cas, Microsoft Entra ID tentera d’honorer la demande. Si ce n’est pas possible, il peut renvoyer une réponse d’erreur ou ignorer complètement la valeur d’invite donnée.
Requêtes interactives avec prompt=none
En règle générale, lorsque vous devez effectuer une demande en mode silencieux, utilisez une méthode MSAL.js silencieuse (ssoSilent
, acquireTokenSilent
), et traitez les erreurs de type login_required ou interaction_required avec une méthode interactive (loginPopup
, loginRedirect
, acquireTokenPopup
, acquireTokenRedirect
).
Néanmoins, dans certains cas, la valeur d’invite none
peut être utilisée avec une méthode MSAL.js interactive pour obtenir une authentification silencieuse. Par exemple, en raison des restrictions relatives aux cookies tiers dans certains navigateurs, les requêtes ssoSilent
échoueront malgré une session utilisateur active avec Microsoft Entra ID. En guise de solution, vous pouvez transmettre la valeur d’invite none
à une demande interactive telle que loginPopup
. MSAL.js ouvrira ensuite une fenêtre contextuelle sur Microsoft Entra ID et Microsoft Entra ID honorera la valeur de l'invite en utilisant le cookie de session existant. Dans ce cas, l’utilisateur voit une brève fenêtre contextuelle, mais n’est pas invité à entrer des informations d’identification.
Étapes suivantes
- Authentification unique avec MSAL.js
- Gérer les erreurs et les exceptions dans MSAL.js
- Gérer la protection intelligente contre le tracking dans Safari et d’autres navigateurs où les cookies tiers sont bloqués
- Flux de code d’autorisation OAuth 2.0 sur la Plateforme d’identités Microsoft
- OpenID Connect sur la plateforme d’identité Microsoft