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