Sdílet prostřednictvím


Chování výzvy pomocí msAL.js

MSAL.js umožňuje předat hodnotu výzvy jako součást metod žádosti o přihlášení nebo token. Na základě scénáře vaší aplikace můžete přizpůsobit chování výzvy Microsoft Entra pro požadavek nastavením parametru výzvy v objektu požadavku:

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

Podporované hodnoty výzvy

Při ověřování pomocí platformy Microsoft Identity Platform je možné použít následující hodnoty výzvy:

Parametr Chování
login Vynutí, aby uživatel zadal své přihlašovací údaje k této žádosti a neguje jednotné přihlašování.
none Zajistí, že se uživateli nezobrazí žádná interaktivní výzva. Pokud žádost nejde dokončit bezobslužně pomocí jednotného přihlašování, vrátí platforma Microsoft Identity Platform login_required nebo interaction_required chybu.
consent Aktivuje dialogové okno souhlasu OAuth po přihlášení uživatele a požádá uživatele o udělení oprávnění aplikaci.
select_account Přeruší jednotné přihlašování tím, že poskytne prostředí pro výběr účtu se seznamem všech účtů v relaci nebo možnost vybrat úplně jiný účet.
create Aktivuje dialogové okno registrace, které externím uživatelům umožňuje vytvořit účet. Další informace najdete v tématu: Samoobslužná registrace

MSAL.js vyvolá invalid_prompt chybu pro všechny nepodporované hodnoty výzvy:

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

Výchozí hodnoty výzvy

Následující příklad ukazuje výchozí hodnoty výzvy, které msAL.js používá:

Metoda MSAL.js Výchozí výzva Povolené výzvy
loginPopup Všechny
loginRedirect Všechny
ssoSilent none Není k dispozici (ignorováno)
acquireTokenPopup Všechny
acquireTokenRedirect Všechny
acquireTokenSilent none Není k dispozici (ignorováno)

Poznámka:

Všimněte si, že výzva je parametr na úrovni protokolu a signalizuje požadované chování ověřování zprostředkovateli identity. Nemá vliv na chování msAL.js a MSAL.js nemá kontrolu nad tím, jak služba nakonec zpracuje požadavek. Za většiny okolností se ID Microsoft Entra pokusí požadavek respektovat. Pokud to není možné, může vrátit chybovou odpověď nebo zcela ignorovat danou hodnotu výzvy.

Interaktivní žádosti s výzvou = none

Obecně platí, že pokud potřebujete provést bezobslužný požadavek, použijte tichou metodu MSAL.js (ssoSilent, ) a zpracovávat všechny login_required nebo interaction_required chyby pomocí interaktivní metody (loginPopup, loginRedirectacquireTokenPopup, , acquireTokenRedirectacquireTokenSilent).

V některých případech je však možné hodnotu none výzvy použít společně s interaktivní metodou MSAL.js k dosažení tichého ověřování. Například kvůli omezením souborů cookie třetích stran v některých prohlížečích požadavky selžou i ssoSilent přes aktivní uživatelskou relaci s ID Microsoft Entra. Jako nápravu můžete předat hodnotu none výzvy interaktivnímu požadavku, například loginPopup. MSAL.js pak otevře automaticky otevírané okno microsoft Entra ID a Microsoft Entra ID bude respektovat hodnotu výzvy pomocí existujícího souboru cookie relace. V tomto případě se uživateli zobrazí krátké automaticky otevírané okno, ale nezobrazí se výzva k zadání přihlašovacích údajů.

Další kroky