Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
2025. május 1-jére az Azure AD B2C már nem lesz elérhető az új ügyfelek számára. További információ a GYIK-ben.
Ez a cikk azt ismerteti, hogyan szabhatja testre és fejlesztheti az Azure Active Directory B2C (Azure AD B2C) hitelesítési élményt az Angular egyoldalas alkalmazáshoz (SPA).
Előfeltételek
Ismerkedjen meg az Angular SPA hitelesítésének konfigurálása vagy a hitelesítés engedélyezése a saját Angular SPA-ban című cikkével.
Bejelentkezési és kijelentkezési viselkedés
Az egyoldalas alkalmazás úgy konfigurálható, hogy a felhasználók kétféleképpen jelentkezzenek be: MSAL.js-val.
-
Előugró ablak: A hitelesítés egy 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. Az Internet Explorer előugró ablakaival kapcsolatban azonban ismert problémák merülnek fel.
- Ha előugró ablakokkal szeretne bejelentkezni az osztályba
src/app/app.component.ts
, használja a metódustloginPopup
. - Az
src/app/app.module.ts
osztályban állítsa ainteractionType
attribútumot a következőre:InteractionType.Popup
. - Ha előugró ablakokkal szeretne kijelentkezni, használja a metódust az
src/app/app.component.ts
logoutPopup
osztályban. Úgy is konfigurálhatjalogoutPopup
, hogy a főablakot egy másik oldalra irányítsa át, például a kezdőlapra vagy a bejelentkezési oldalra, a kérés részekéntmainWindowRedirectUri
átadva, miután a kijelentkezés befejeződött.
- Ha előugró ablakokkal szeretne bejelentkezni az osztályba
-
Átirányítás: A rendszer átirányítja a felhasználót az 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átokkal vagy szabályzatokkal rendelkeznek, amelyekben az előugró ablakok le vannak tiltva.
- Ha átirányítással szeretne bejelentkezni, használja a metódust az
src/app/app.component.ts
loginRedirect
osztályban. - Az
src/app/app.module.ts
osztályban állítsa ainteractionType
attribútumot a következőre:InteractionType.Redirect
. - Ha átirányítással szeretne kijelentkezni, az
src/app/app.component.ts
osztályban használja alogoutRedirect
metódust. Konfigurálja azt az URI-t, amelyhez a kijelentkezés után át kell irányítania, apostLogoutRedirectUri
beállítással. Ezt az URI-t átirányítási URI-ként kell hozzáadnia az alkalmazásregisztrációhoz.
- Ha átirányítással szeretne bejelentkezni, használja a metódust az
Az alábbi minta bemutatja, hogyan lehet bejelentkezni és kijelentkezni:
//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 folyamatból áll: 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ói akkor lépnek érvénybe, amikor 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 való 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 egy felhasználót céloz meg, az engedélyezési kérelemben megadhatja a login_hint
lekérdezési paramétert a felhasználó bejelentkezési nevével. Az 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ű cikkben leírtak szerint.
- Használjon meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot, vagy hozzon létre egyet. - Állítsa be az
loginHint
attribútumot a megfelelő bejelentkezési tippdel.
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 kijelölése
Ha úgy konfigurálta az alkalmazás bejelentkezési útját, hogy közösségi fiókokat , például Facebookot, LinkedIn-t vagy Google-t is tartalmazzon, megadhatja a paramétert domain_hint
. Ez a lekérdezési paraméter az Azure AD B2C-nek a bejelentkezéshez használandó közösségi identitásszolgáltatóra vonatkozó tippet nyújt. 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.
- Használjon meglévő
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektumot, vagy hozzon létre egyet. - Á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ány-tipp 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
Az Azure AD B2C nyelvi testreszabása lehetővé teszi a felhasználói folyamat számára, hogy 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.
- Létező
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektum használataextraQueryParameters
attribútumokkal. - Adja hozzá a
ui_locales
paramétert a megfelelő nyelvi kóddal azextraQueryParameters
attribútumokhoz.
Az alábbi kódrészletek bemutatják, hogyan lehet átadni a tartomány-tipp 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 sztringparaméter á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.
- Létező
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektum használataextraQueryParameters
attribútumokkal. - Adja hozzá az egyéni lekérdezési sztring paramétert, például
campaignId
. Adja meg a paraméter értékét.
Az alábbi kódrészletek bemutatják, hogyan adhat át 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ó token javaslat átadása
A függő entitásalkalmazások az OAuth2 engedélyezési kérelem részeként küldhetnek bejövő JSON-webjogkivonatot (JWT). A bejövő jogkivonat egy jelzés a felhasználóra vagy az engedélyezési kérelemre vonatkozóan. Az Azure AD B2C ellenőrzi a jogkivonatot, majd kinyeri a jogcímet.
Azonosító token javaslat hozzáadásához a hitelesítési kéréshez, tegye a következőket:
- Az egyéni szabályzatban adja meg egy azonosító jogkivonat-tipp technikai profilját.
- Létező
PopupRequest
vagyRedirectRequest
MSAL konfigurációs objektum használataextraQueryParameters
attribútumokkal. - Az
id_token_hint
paramétert adja hozzá az azonosító jogkivonatot tároló megfelelő változóhoz.
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 domain használatával teljesen testre szabhatja a hitelesítési URL-t. Felhasználói szempontból a felhasználók a hitelesítési folyamat során a tartományon maradnak, ahelyett, hogy az Azure AD B2C b2clogin.com tartománynévre irányítanák át őket.
Ha az URL-címben el szeretné távolítani a "b2c" kifejezésre mutató összes hivatkozást, a B2C-bérlő nevét is lecserélheti contoso.onmicrosoft.com a hitelesítési kérelem URL-címében a bérlőazonosító GUID azonosítójával. Például átválthatja a https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
elemet a https://account.contosobank.co.uk/<tenant ID GUID>/
elemre.
Ha az egyéni tartományt szeretné használni a bérlőazonosítójához a hitelesítési URL-címben, kövesse az Egyéni tartományok engedélyezése című útmutatót. Nyissa meg az src/app/auth-config.ts
MSAL konfigurációs objektumot, és módosítsa a authorities
és knownAuthorities
, hogy azok az egyéni domainnevet és a bérlői azonosítót használják.
Az alábbi JavaScript az MSAL konfigurációs objektumot jeleníti meg 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"],
...
},
...
}
Az alábbi JavaScript az MSAL konfigurációs objektumot jeleníti meg 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észletesség és a személyes és szervezeti adatok naplózása felett.
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, hogy hitelesítési problémák esetén küldjenek naplókat. Az MSAL az alábbi naplózási szinteket biztosítja:
- Hiba: Valami rosszul sikerült, és hiba keletkezett. 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 meghibásodás, de az információk a diagnosztika és problémák pontos azonosítására szolgálnak.
- Információ: Az MSAL naplózza azokat az eseményeket, amelyek információs célokat 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.
Az Angular-naplózás konfigurálásához az src/app/auth-config.ts 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.