Konfigurace možností ověřování v aplikaci Angular pomocí Azure Active Directory B2C
Tento článek popisuje, jak můžete přizpůsobit a vylepšit prostředí ověřování Azure Active Directory B2C (Azure AD B2C) pro Angular jednostránkovou aplikaci (SPA).
Požadavky
Seznamte se s článkem Konfigurace ověřování v Angular SPA nebo Povolení ověřování ve vlastním Angular SPA.
Chování při přihlašování a odhlašování
Jednostránkovou aplikaci můžete nakonfigurovat tak, aby přihlašovat uživatele pomocí MSAL.js dvěma způsoby:
-
Automaticky otevírané okno: Ověřování probíhá v automaticky otevíraném okně a stav aplikace se zachová. Tento přístup použijte, pokud nechcete, aby se uživatelé během ověřování vzdálili od stránky aplikace. Existují však známé problémy s automaticky otevíranými okny v Internet Exploreru.
- Pokud se chcete přihlásit pomocí automaticky otevíraných oken, použijte ve
src/app/app.component.ts
třídě metoduloginPopup
. -
src/app/app.module.ts
Ve třídě nastavteinteractionType
atribut naInteractionType.Popup
. - Pokud se chcete odhlásit pomocí automaticky otevíraných oken, použijte ve
src/app/app.component.ts
třídě metodulogoutPopup
. Můžete také nakonfigurovat přesměrovánílogoutPopup
hlavního okna na jinou stránku, jako je domovská stránka nebo přihlašovací stránka, po dokončení odhlášení předánímmainWindowRedirectUri
v rámci žádosti.
- Pokud se chcete přihlásit pomocí automaticky otevíraných oken, použijte ve
-
Přesměrování: Uživatel je přesměrován na Azure AD B2C, aby dokončil tok ověřování. Tento přístup použijte, pokud mají uživatelé omezení prohlížeče nebo zásady, ve kterých jsou automaticky otevíraná okna zakázaná.
- Pokud se chcete přihlásit s přesměrováním, použijte ve
src/app/app.component.ts
třídě metoduloginRedirect
. -
src/app/app.module.ts
Ve třídě nastavteinteractionType
atribut naInteractionType.Redirect
. - Pokud se chcete odhlásit s přesměrováním, použijte ve
src/app/app.component.ts
třídě metodulogoutRedirect
. Nakonfigurujte identifikátor URI, na který se má po odhlášení přesměrovat, nastavenímpostLogoutRedirectUri
. Tento identifikátor URI byste měli přidat jako identifikátor URI přesměrování do registrace aplikace.
- Pokud se chcete přihlásit s přesměrováním, použijte ve
Následující ukázka ukazuje, jak se přihlásit a odhlásit:
//src/app/app.component.ts
login() {
if (this.msalGuardConfig.authRequest){
this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest);
} else {
this.authService.loginPopup();
}
}
logout() {
this.authService.logoutPopup({
mainWindowRedirectUri: '/',
});
}
Knihovna MSAL Angular má tři toky přihlašování: interaktivní přihlašování (kde uživatel vybere tlačítko pro přihlášení), MSAL Guard a MSAL Interceptor. Konfigurace MSAL Guard a MSAL Interceptor se projeví, když se uživatel pokusí o přístup k chráněnému prostředku bez platného přístupového tokenu. V takových případech knihovna MSAL vynutí, aby se uživatel přihlásil.
Následující ukázky ukazují, jak nakonfigurovat MSAL Guard a MSAL Interceptor pro přihlášení s automaticky otevíraným oknem nebo přesměrováním:
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
}
},
{
interactionType: InteractionType.Popup,
protectedResourceMap: new Map([
[protectedResources.todoListApi.endpoint, protectedResources.todoListApi.scopes]
])
})
Předem vyplníte přihlašovací jméno.
Během cesty uživatele přihlášení 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ředem naplnit přihlašovací jméno, 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 nebo použijte existující
PopupRequest
neboRedirectRequest
objekt konfigurace MSAL. -
loginHint
Nastavte atribut s odpovídající nápovědou pro přihlášení.
Následující fragmenty kódu ukazují, jak předat parametr nápovědy pro přihlášení. Používají bob@contoso.com
jako hodnotu atributu.
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.loginHint = "bob@contoso.com"
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
loginHint: "bob@contoso.com"
}
},
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 pro 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 nebo použijte existující
PopupRequest
neboRedirectRequest
objekt konfigurace MSAL. -
domainHint
Nastavte atribut s odpovídajícím nápovědou k doméně.
Následující fragmenty kódu ukazují, jak předat parametr nápovědy k doméně. Používají facebook.com
jako hodnotu atributu.
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.domainHint = "facebook.com";
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
domainHint: "facebook.com"
}
},
Určení jazyka uživatelského rozhraní
Přizpůsobení jazyka v Azure AD B2C umožňuje toku uživatelů přizpůsobit 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:
- Nakonfigurujte přizpůsobení jazyka.
- Vytvořte nebo použijte existující
PopupRequest
neboRedirectRequest
msal objekt konfigurace sextraQueryParameters
atributy. - Přidejte do
ui_locales
atributů parametr s odpovídajícím kódem jazykaextraQueryParameters
.
Následující fragmenty kódu ukazují, jak předat parametr nápovědy k doméně. Používají es-es
jako hodnotu atributu.
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.extraQueryParameters = {"ui_locales" : "es-es"};
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
extraQueryParameters: {"ui_locales" : "es-es"}
}
},
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 nebo použijte existující
PopupRequest
neboRedirectRequest
msal objekt konfigurace sextraQueryParameters
atributy. - Přidejte parametr vlastního řetězce dotazu, například
campaignId
. Nastavte hodnotu parametru.
Následující fragmenty kódu ukazují, jak předat vlastní parametr řetězce dotazu. Používají germany-promotion
jako hodnotu atributu.
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.extraQueryParameters = {"campaignId": 'germany-promotion'}
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
extraQueryParameters: {"ui_locales" : "es-es"}
}
},
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 představuje nápovědu k uživateli 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 nebo použijte existující
PopupRequest
neboRedirectRequest
msal objekt konfigurace sextraQueryParameters
atributy. -
id_token_hint
Přidejte parametr s odpovídající proměnnou, která ukládá token ID.
Následující fragmenty kódu ukazují, jak definovat nápovědu tokenu ID:
// src/app/app.component.ts
let authRequestConfig: PopupRequest;
if (this.msalGuardConfig.authRequest) {
authRequestConfig = { ...this.msalGuardConfig.authRequest } as PopupRequest
}
authRequestConfig.extraQueryParameters = {"id_token_hint": idToken};
this.authService.loginPopup(authRequestConfig);
// src/app/app.module.ts
MsalModule.forRoot(new PublicClientApplication(msalConfig),
{
interactionType: InteractionType.Popup,
authRequest: {
scopes: protectedResources.todoListApi.scopes,
extraQueryParameters: {"id_token_hint" : idToken}
}
},
Použití vlastní domény
Pomocí vlastní domény můžete plně označit ověřovací adresu URL. Z pohledu uživatele zůstanou uživatelé během procesu ověřování na vaší doméně, místo aby byli přesměrováni na Azure AD B2C b2clogin.com název domény.
Pokud chcete odebrat všechny odkazy na b2c v adrese URL, můžete také nahradit název tenanta B2C contoso.onmicrosoft.com v adrese URL žádosti o ověření 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 pro ID tenanta v ověřovací adrese URL použít vlastní doménu, postupujte podle pokynů v tématu Povolení vlastních domén.
src/app/auth-config.ts
Otevřete objekt konfigurace MSAL a změňte authorities
a knownAuthorities
použijte vlastní název domény a ID tenanta.
Následující JavaScript 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í JavaScript zobrazuje objekt konfigurace MSAL po změně:
const msalConfig = {
auth: {
...
authority: "https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi",
knownAuthorities: ["custom.domain.com"],
...
},
...
}
Konfigurace protokolování
Knihovna MSAL generuje zprávy protokolu, které mohou pomoci diagnostikovat problémy. Aplikace může nakonfigurovat protokolování. Aplikace vám také může poskytnout vlastní kontrolu nad úrovní podrobností a nad tím, jestli se protokolují osobní a organizační data.
Doporučujeme vytvořit zpětné volání protokolování MSAL a poskytnout uživatelům způsob, jak odesílat protokoly, když mají problémy s ověřováním. Knihovna MSAL poskytuje tyto úrovně podrobností protokolování:
- Chyba: Něco se nepovedlo a vygenerovala se chyba. Tato úroveň se používá k ladění a identifikaci problémů.
- Upozornění: Nemusí nutně dojít k chybě nebo selhání, ale informace jsou určené pro diagnostiku a určení problémů.
- Informace: Knihovna MSAL protokoluje události, které jsou určené pro informační účely a ne nutně pro ladění.
- Podrobné: Toto je výchozí úroveň. KNIHOVNA MSAL protokoluje úplné podrobnosti o chování knihovny.
Ve výchozím nastavení protokolovací nástroj MSAL nezachytává žádná osobní ani organizační data. Knihovna vám umožňuje povolit protokolování osobních a organizačních dat, pokud se tak rozhodnete.
Pokud chcete nakonfigurovat protokolování Angular, nakonfigurujte v souboru src/app/auth-config.ts následující klíče:
-
loggerCallback
je funkce zpětného volání protokolovacího nástroje. -
logLevel
umožňuje určit úroveň protokolování. Možné hodnoty:Error
,Warning
,Info
aVerbose
. -
piiLoggingEnabled
umožňuje zadávání osobních údajů. Možné hodnoty:true
nebofalse
.
Následující fragment kódu ukazuje, jak nakonfigurovat protokolování MSAL:
export const msalConfig: Configuration = {
...
system: {
loggerOptions: {
loggerCallback: (logLevel, message, containsPii) => {
console.log(message);
},
logLevel: LogLevel.Verbose,
piiLoggingEnabled: false
}
}
...
}
Další kroky
- Další informace: MSAL.js možnosti konfigurace.