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
, loginRedirect
acquireTokenPopup
, , acquireTokenRedirect
acquireTokenSilent
).
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
- Jednotné přihlašování pomocí MSAL.js
- Zpracování chyb a výjimek v msAL.js
- Zpracování ITP v Safari a dalších prohlížečích, ve kterých jsou blokované soubory cookie třetích stran
- Tok autorizačního kódu OAuth 2.0 na platformě Microsoft Identity Platform
- OpenID Připojení na platformě Microsoft Identity Platform