Hitelesítési beállítások konfigurálása Angular alkalmazásban az Azure Active Directory B2C használatával
Ez a cikk azt ismerteti, hogyan szabhatja testre és javíthatja az Azure Active Directory B2C (Azure AD B2C) hitelesítési élményét az Angular egyoldalas alkalmazáshoz (SPA).
Előfeltételek
Ismerkedjen meg a Hitelesítés konfigurálása Angular SPA-ban vagy A hitelesítés engedélyezése a saját Angular SPA-ban című cikkben.
Bejelentkezési és kijelentkezési viselkedés
Az egyoldalas alkalmazást kétféleképpen konfigurálhatja úgy, hogy MSAL.js felhasználókat jelentkezzen be:
- Előugró ablak: A hitelesítés előugró ablakban történik, és az alkalmazás állapota megmarad. Ezt a módszert akkor használja, ha nem szeretné, hogy a felhasználók a hitelesítés során elmozduljanak az alkalmazás oldaláról. Vannak azonban ismert problémák az Internet Explorer előugró ablakaival kapcsolatban.
- Ha előugró ablakokkal szeretne bejelentkezni, használja a metódust a
src/app/app.component.ts
loginPopup
osztályban. - A osztályban
src/app/app.module.ts
állítsa az attribútumot értékreinteractionType
InteractionType.Popup
. - Ha előugró ablakokkal szeretne kijelentkezni, használja a metódust a
src/app/app.component.ts
logoutPopup
osztályban. Azt is beállíthatjalogoutPopup
, hogy a főablakot átirányítsa egy másik lapra, például a kezdőlapra vagy a bejelentkezési oldalra, miután a kijelentkezés befejeződött, a kérés részeként történő átadássalmainWindowRedirectUri
.
- Ha előugró ablakokkal szeretne bejelentkezni, használja a metódust a
- Átirányítás: A rendszer átirányítja a felhasználót Azure AD B2C-be a hitelesítési folyamat befejezéséhez. Ezt a módszert akkor használja, ha a felhasználók böngészőkorlátozásokkal vagy szabályzatokkal rendelkeznek, amelyekben az előugró ablakok le vannak tiltva.
- Átirányítással való bejelentkezéshez a
src/app/app.component.ts
osztályban használja a metódustloginRedirect
. - A osztályban
src/app/app.module.ts
állítsa az attribútumot értékreinteractionType
InteractionType.Redirect
. - Ha átirányítással szeretne kijelentkezni, használja a metódust a
src/app/app.component.ts
logoutRedirect
osztályban. Konfigurálja azt az URI-t, amelyre a kijelentkezés után át kell irányítania. Ehhez állítsa be a következőtpostLogoutRedirectUri
: . Ezt az URI-t átirányítási URI-ként kell hozzáadnia az alkalmazásregisztrációhoz.
- Átirányítással való bejelentkezéshez a
Az alábbi minta bemutatja, hogyan jelentkezhet be és jelentkezhet ki:
//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: '/',
});
}
Az MSAL Angular kódtár három bejelentkezési folyamattal rendelkezik: interaktív bejelentkezés (ahol a felhasználó kiválasztja a bejelentkezési gombot), az MSAL Guard és az MSAL Interceptor. Az MSAL Guard és az MSAL Interceptor konfigurációja akkor lép érvénybe, ha egy felhasználó érvényes hozzáférési jogkivonat nélkül próbál hozzáférni egy védett erőforráshoz. Ilyen esetekben az MSAL-kódtár kényszeríti a felhasználót a bejelentkezésre.
Az alábbi minták bemutatják, hogyan konfigurálható az MSAL Guard és az MSAL Interceptor előugró ablakkal vagy átirányítással történő bejelentkezéshez:
// 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]
])
})
A bejelentkezési név előzetes feltöltése
A bejelentkezési felhasználói folyamat során előfordulhat, hogy az alkalmazás egy adott felhasználót céloz meg. Amikor egy alkalmazás megcélz egy felhasználót, az engedélyezési kérelemben megadhatja a login_hint
lekérdezési paramétert a felhasználó bejelentkezési nevével. Azure AD B2C automatikusan kitölti a bejelentkezési nevet, és a felhasználónak csak a jelszót kell megadnia.
A bejelentkezési név előzetes feltöltéséhez tegye a következőket:
- Ha egyéni szabályzatot használ, adja hozzá a szükséges bemeneti jogcímet a Közvetlen bejelentkezés beállítása című témakörben leírtak szerint.
- Hozzon létre vagy használjon egy meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot. - Állítsa be az
loginHint
attribútumot a megfelelő bejelentkezési tipptel.
Az alábbi kódrészletek bemutatják, hogyan lehet átadni a bejelentkezési tipp paramétert. Attribútumértékként használják bob@contoso.com
őket.
// 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"
}
},
Identitásszolgáltató előzetes kiválasztása
Ha úgy konfigurálta az alkalmazás bejelentkezési útját, hogy közösségi fiókokat ( például Facebook, LinkedIn vagy Google) tartalmazzon, megadhatja a paramétert domain_hint
. Ez a lekérdezési paraméter a B2C Azure AD a bejelentkezéshez használni kívánt közösségi identitásszolgáltatóra vonatkozó tippet. Ha például az alkalmazás megadja domain_hint=facebook.com
, a bejelentkezési folyamat közvetlenül a Facebook bejelentkezési oldalára kerül.
A felhasználók külső identitásszolgáltatóhoz való átirányításához tegye a következőket:
- Ellenőrizze a külső identitásszolgáltató tartománynevét. További információ: Bejelentkezés átirányítása közösségi szolgáltatóhoz.
- Hozzon létre vagy használjon egy meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot. - Állítsa be az
domainHint
attribútumot a megfelelő tartománymutatóval.
Az alábbi kódrészletek bemutatják, hogyan lehet átadni a tartománymutató paramétert. Attribútumértékként használják facebook.com
őket.
// 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"
}
},
A felhasználói felület nyelvének megadása
A Azure AD B2C nyelvi testreszabása lehetővé teszi, hogy a felhasználói folyamat az ügyfelek igényeinek megfelelően különféle nyelveket fogadjon el. További információ: Nyelvi testreszabás.
Az előnyben részesített nyelv beállításához tegye a következőket:
- Nyelvi testreszabás konfigurálása.
- Hozzon létre vagy használjon egy meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot attribútumokkalextraQueryParameters
. - Adja hozzá a
ui_locales
paramétert a megfelelő nyelvkóddal azextraQueryParameters
attribútumokhoz.
Az alábbi kódrészletek bemutatják, hogyan lehet átadni a tartománymutató paramétert. Attribútumértékként használják es-es
őket.
// 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"}
}
},
Egyéni lekérdezési sztring paraméterének átadása
Egyéni szabályzatokkal egyéni lekérdezési sztringparamétert adhat át. Jó példa erre, ha dinamikusan szeretné módosítani a lap tartalmát.
Egyéni lekérdezési sztringparaméter átadásához tegye a következőket:
- Konfigurálja a ContentDefinitionParameters elemet.
- Hozzon létre vagy használjon egy meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot attribútumokkalextraQueryParameters
. - Adja hozzá az egyéni lekérdezési sztring paramétert, például
campaignId
: . Állítsa be a paraméter értékét.
Az alábbi kódrészletek bemutatják, hogyan lehet átadni egy egyéni lekérdezési sztringparamétert. Attribútumértékként használják germany-promotion
őket.
// 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"}
}
},
Azonosító jogkivonat-emlékeztető átadása
A függő entitásalkalmazások az OAuth2 engedélyezési kérésének részeként küldhetnek bejövő JSON-webtokent (JWT). A bejövő jogkivonat a felhasználóra vagy az engedélyezési kérelemre vonatkozó tipp. Azure AD B2C ellenőrzi a jogkivonatot, majd kinyeri a jogcímet.
Ha azonosítótoken-emlékeztetőt szeretne hozzáadni a hitelesítési kérelemhez, tegye a következőket:
- Az egyéni szabályzatban adja meg egy azonosítótoken-tipp technikai profilját.
- Hozzon létre vagy használjon egy meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot attribútumokkalextraQueryParameters
. - Adja hozzá a paramétert
id_token_hint
az azonosító jogkivonatot tároló megfelelő változóval.
Az alábbi kódrészletek bemutatják, hogyan definiálhat azonosítótoken-tippet:
// 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}
}
},
Egyéni tartomány használata
Egyéni tartomány használatával teljes mértékben megadhatja a hitelesítési URL-címet. Felhasználói szempontból a felhasználók a hitelesítési folyamat során a tartományon maradnak, ahelyett, hogy átirányítanák a Azure AD B2C b2clogin.com tartománynévre.
Ha az URL-címben el szeretné távolítani a "b2c" kifejezésre mutató összes hivatkozást, lecserélheti a B2C-bérlő nevét (contoso.onmicrosoft.com) a hitelesítési kérelem URL-címében a bérlőazonosító GUID azonosítójára. Módosíthatja például https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
a következőre: https://account.contosobank.co.uk/<tenant ID GUID>/
.
Ha az egyéni tartományt szeretné használni a bérlőazonosítóhoz a hitelesítési URL-címben, kövesse az Egyéni tartományok engedélyezése című témakör útmutatását. Nyissa meg az src/app/auth-config.ts
MSAL konfigurációs objektumot, és módosítsa authorities
knownAuthorities
és használja az egyéni tartománynevet és a bérlőazonosítót.
Az alábbi JavaScript az MSAL konfigurációs objektumot mutatja a módosítás előtt:
const msalConfig = {
auth: {
...
authority: "https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/B2C_1_susi",
knownAuthorities: ["fabrikamb2c.b2clogin.com"],
...
},
...
}
A következő JavaScript az MSAL konfigurációs objektumot mutatja a módosítás után:
const msalConfig = {
auth: {
...
authority: "https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi",
knownAuthorities: ["custom.domain.com"],
...
},
...
}
Naplózás konfigurálása
Az MSAL-kódtár naplóüzeneteket hoz létre, amelyek segíthetnek a problémák diagnosztizálásában. Az alkalmazás konfigurálhatja a naplózást. Az alkalmazás egyéni vezérlést is biztosít a részletek szintjéről, valamint arról, hogy a rendszer naplózza-e a személyes és szervezeti adatokat.
Javasoljuk, hogy hozzon létre egy MSAL-naplózási visszahívást, és biztosítson módot a felhasználók számára a naplók elküldésére hitelesítési problémák esetén. Az MSAL az alábbi naplózási szinteket biztosítja:
- Hiba: Hiba történt, és hiba történt. Ez a szint a problémák hibakeresésére és azonosítására szolgál.
- Figyelmeztetés: Nem feltétlenül történt hiba vagy hiba, de az információk diagnosztikai és kitűzési problémákra szolgálnak.
- Információ: Az MSAL olyan eseményeket naplóz, amelyek információs célokra szolgálnak, és nem feltétlenül hibakeresésre szolgálnak.
- Részletes: Ez az alapértelmezett szint. Az MSAL naplózza a kódtár viselkedésének teljes részleteit.
Alapértelmezés szerint az MSAL-naplózó nem rögzít személyes vagy szervezeti adatokat. A kódtár lehetővé teszi a személyes és szervezeti adatok naplózását, ha úgy dönt, hogy ezt teszi.
Angular naplózás konfigurálásához az src/app/auth-config.ts fájlban konfigurálja a következő kulcsokat:
loggerCallback
a naplózó visszahívási függvénye.logLevel
lehetővé teszi a naplózási szint megadását. Lehetséges értékek:Error
,Warning
,Info
ésVerbose
.piiLoggingEnabled
lehetővé teszi a személyes adatok bevitelét. Lehetséges értékek:true
vagyfalse
.
Az alábbi kódrészlet bemutatja, hogyan konfigurálható az MSAL-naplózás:
export const msalConfig: Configuration = {
...
system: {
loggerOptions: {
loggerCallback: (logLevel, message, containsPii) => {
console.log(message);
},
logLevel: LogLevel.Verbose,
piiLoggingEnabled: false
}
}
...
}
Következő lépések
- További információ: MSAL.js konfigurációs beállítások.