Konfigurace možností ověřování v jednostránkové aplikaci pomocí Azure AD B2C
Tento článek popisuje, jak přizpůsobit a vylepšit prostředí ověřování Azure Active Directory B2C (Azure AD B2C) pro jednostránkovou aplikaci (SPA).
Než začnete, seznamte se s následujícím článkem: Konfigurace ověřování v ukázkové webové aplikaci.
Použití vlastní domény
Pomocí vlastní domény můžete adresu URL ověřování plně o značit. Z pohledu uživatele zůstanou uživatelé během procesu ověřování ve vaší doméně, místo aby byli přesměrováni na Azure AD B2C b2clogin.com název domény.
Pokud chcete v adrese URL odebrat všechny odkazy na b2c, můžete v adrese URL žádosti o ověření nahradit název tenanta B2C contoso.onmicrosoft.com identifikátorem GUID vašeho tenanta. Můžete například změnit https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
na https://account.contosobank.co.uk/<tenant ID GUID>/
.
Pokud chcete v ověřovací adrese URL použít vlastní doménu a ID tenanta, postupujte podle pokynů v tématu Povolení vlastních domén. Vyhledejte objekt konfigurace knihovny Microsoft Authentication Library (MSAL) a změňte autority a známéauthority tak, aby používaly vlastní název domény a ID tenanta.
Následující kód JavaScriptu ukazuje objekt konfigurace MSAL před změnou:
const msalConfig = {
auth: {
...
authority: "https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/B2C_1_susi",
knownAuthorities: ["fabrikamb2c.b2clogin.com"],
...
},
...
}
Následující kód JavaScriptu ukazuje objekt konfigurace KNIHOVNY MSAL po změně:
const msalConfig = {
auth: {
...
authority: "https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi",
knownAuthorities: ["custom.domain.com"],
...
},
...
}
Předem vyplní přihlašovací jméno.
Během přihlašovací cesty uživatele může vaše aplikace cílit na konkrétního uživatele. Když aplikace cílí na uživatele, může v žádosti o login_hint
autorizaci zadat parametr dotazu s přihlašovacím jménem uživatele. Azure AD B2C automaticky vyplní přihlašovací jméno a uživatel musí zadat jenom heslo.
Pokud chcete přihlašovací jméno předem naplnit, postupujte takto:
Pokud používáte vlastní zásadu, přidejte požadovanou vstupní deklaraci identity, jak je popsáno v tématu Nastavení přímého přihlášení.
Vytvořte objekt pro uložení login_hint a předejte ho do metody MSAL loginPopup().
let loginRequest = { loginHint: "bob@contoso.com" } myMSALObj.loginPopup(loginRequest);
Předběžný výběr zprostředkovatele identity
Pokud jste nakonfigurovali přihlašovací cestu pro vaši aplikaci tak, aby zahrnovala účty sociálních sítí, jako je Facebook, LinkedIn nebo Google, můžete zadat domain_hint
parametr . Tento parametr dotazu poskytuje nápovědu k Azure AD B2C o zprostředkovateli sociální identity, který by se měl použít pro přihlášení. Pokud například aplikace zadá domain_hint=facebook.com
, tok přihlášení přejde přímo na přihlašovací stránku Facebooku.
Pokud chcete uživatele přesměrovat na externího zprostředkovatele identity, postupujte takto:
Zkontrolujte název domény externího zprostředkovatele identity. Další informace najdete v tématu Přesměrování přihlášení k poskytovateli sociálních sítí.
Vytvořte objekt pro uložení extraQueryParameters a předejte tento objekt do metody MSAL loginPopup().
let loginRequest = { extraQueryParameters: {domain_hint: 'facebook.com'} } myMSALObj.loginPopup(loginRequest);
Určení jazyka uživatelského rozhraní
Přizpůsobení jazyka v Azure AD B2C umožňuje toku uživatelů pojmout různé jazyky tak, aby vyhovovaly potřebám vašich zákazníků. Další informace najdete v tématu Přizpůsobení jazyka.
Upřednostňovaný jazyk nastavíte takto:
Vytvořte objekt pro uložení extraQueryParameters a předejte tento objekt do metody MSAL loginPopup().
let loginRequest = { extraQueryParameters: {ui_locales: 'en-us'} } myMSALObj.loginPopup(loginRequest);
Předání vlastního parametru řetězce dotazu
S vlastními zásadami můžete předat vlastní parametr řetězce dotazu. Dobrým příkladem použití je, když chcete dynamicky měnit obsah stránky.
Pokud chcete předat vlastní parametr řetězce dotazu, postupujte takto:
Nakonfigurujte element ContentDefinitionParameters .
Vytvořte objekt pro uložení extraQueryParameters a předejte tento objekt do metody MSAL loginPopup().
let loginRequest = { extraQueryParameters: {campaignId: 'germany-promotion'} } myMSALObj.loginPopup(loginRequest);
Nápověda k předání tokenu ID
Aplikace předávající strany může v rámci žádosti o autorizaci OAuth2 odeslat příchozí webový token JSON (JWT). Příchozí token je nápověda týkající se uživatele nebo žádosti o autorizaci. Azure AD B2C token ověří a pak deklaraci identity extrahuje.
Pokud chcete do žádosti o ověření zahrnout nápovědu tokenu ID, postupujte takto:
Ve vlastních zásadách definujte technický profil nápovědy tokenu ID.
Vytvořte objekt pro uložení extraQueryParameters a předejte tento objekt do metody MSAL loginPopup().
let loginRequest = { extraQueryParameters: {id_token_hint: 'id-token-hint-value'} } myMSALObj.loginPopup(loginRequest);
Zabezpečení přesměrování odhlášení
Po odhlášení je uživatel přesměrován na identifikátor URI zadaný v parametru post_logout_redirect_uri
bez ohledu na adresy URL odpovědí, které byly pro aplikaci zadány. Pokud je však předána platná id_token_hint
hodnota a je zapnuta možnost Vyžadovat token ID v požadavcích na odhlášení, Azure AD B2C před provedením přesměrování ověří, že hodnota post_logout_redirect_uri
odpovídá některému z nakonfigurovaných identifikátorů URI přesměrování aplikace. Pokud pro aplikaci nebyla nakonfigurována žádná odpovídající adresa URL odpovědi, zobrazí se chybová zpráva a uživatel nebude přesměrován.
Pokud chcete podporovat zabezpečený identifikátor URI přesměrování odhlášení, postupujte následovně:
Vytvořte globálně dostupnou proměnnou pro uložení .
id_token
let id_token = "";
Ve funkci MSAL
handleResponse
parsujteid_token
objekt z objektuauthenticationResult
doid_token
proměnné .function handleResponse(response) { if (response !== null) { setAccount(response.account); id_token = response.idToken; } else { selectAccount(); } }
signOut
Ve funkci přidejteid_token_hint
parametr do objektu logoutRequest.function signOut() { const logoutRequest = { postLogoutRedirectUri: msalConfig.auth.redirectUri, //set id_token_hint to the id_token value idTokenHint : id_token, mainWindowRedirectUri: msalConfig.auth.redirectUri }; myMSALObj.logoutPopup(logoutRequest); }
Ve výše uvedeném příkladu bude post_logout_redirect_uri předaný do požadavku na odhlášení ve formátu . https://your-app.com/
Tato adresa URL musí být přidána do adres URL odpovědí pro registraci aplikace.
Povolení jednorázového odhlášení
Jedno odhlášení v Azure AD B2C používá front-channel odhlášení OpenId Connect k provedení požadavků na odhlášení ze všech aplikací, ke které se uživatel přihlásil prostřednictvím Azure AD B2C.
Tyto žádosti o odhlášení se provádějí ze stránky odhlášení Azure AD B2C ve skrytém prvku IFrame. Rámce IFrame můžou provádět požadavky HTTP na všechny koncové body odhlášení front-channel zaregistrované pro aplikace, které Azure AD B2C zaznamenaly jako přihlášené.
Koncový bod odhlášení pro každou aplikaci musí volat metodu MSAL logout(). V tomto scénáři musíte také explicitně nakonfigurovat MSAL tak, aby běžela v rámci Iframe, a to nastavením allowRedirectInIframe
na true
.
Následující ukázka kódu nastaví allowRedirectInIframe
na true
:
const msalConfig = {
auth: {
clientId: "enter_client_id_here",
.....
},
cache: {
cacheLocation: "..",
....
},
system: {
allowRedirectInIframe: true
};
}
async function logoutSilent(MSAL) {
return MSAL.logout({
onRedirectNavigate: (url) => {
return false;
}
Další kroky
Přečtěte si další informace o možnostech konfiguraceMSAL.js.