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.
Az MSAL Angular az útvonalak védelmére és hitelesítésre használható osztályt biztosít MsalGuarda védett útvonal elérése előtt. Ez a dokumentum további információt nyújt a konfigurálásról és a használat során MsalGuardmegfontolandó szempontokról.
MsalGuard egy olyan kényelmi osztály, amelyet a felhasználói élmény javítása érdekében használhat, de biztonsági okokból nem szabad arra támaszkodni. A támadók potenciálisan megkerülhetik az ügyféloldali őröket, és győződjön meg arról, hogy a kiszolgáló nem ad vissza olyan adatokat, amelyekhez a felhasználó nem férhet hozzá.
Szükség lehet egy útvonalőrre is, amely megfelel az adott igényeknek. Javasoljuk, hogy készítsen saját védelmet, ha a MsalGuard nem felel meg mindezeknek az igényeknek.
Konfigurációk
A app.module.ts és a app-routing.module.ts fájlokban a MsalGuard konfigurálása
A MsalGuard szolgáltatóként hozzáadható az alkalmazáshoz az app.module.ts fájlban, a konfigurációjával együtt. Az importálás az MSAL egy példányát, valamint két Angular-specifikus konfigurációs objektumot vesz igénybe. A második argumentum egy MsalGuardConfiguration objektum, amely a választható és az opcionális interactionTypeauthRequestértékeket loginFailedRoutetartalmazza.
Ezután MsalGuard a app-routing.module.ts útvonalainak védelmére szolgál. Az alábbi kódminta bemutatja, hogyan adható hozzá a(z) MsalGuard a(z) Profile útvonalhoz.
Profile Az útvonal védelme azt jelenti, hogy még akkor is, ha egy felhasználó nem a gomb használatával jelentkezik beLogin, ha megpróbál hozzáférni az Profile útvonalhoz, vagy rákattint a Profile gombra, a MsalGuard rendszer arra kéri a felhasználót, hogy a lap megjelenítése előtt hitelesítsen Profile előugró vagy átirányítási funkcióval.
A konfiguráció az alábbihoz hasonlóan nézhet ki. Az MSAL Angular alkalmazáshoz való konfigurálásának egyéb módjairól szóló konfigurációs dokumentumunkban , valamint az alábbi szakaszokban további információt talál az MsalConfiguration útválasztás objektumáról és felületéről.
// app.module.ts
import { NgModule } from '@angular/core';
import { HTTP_INTERCEPTORS, HttpClientModule } from "@angular/common/http";
import { MsalModule, MsalRedirectComponent, MsalGuard } from '@azure/msal-angular'; // Import MsalInterceptor
import { InteractionType, PublicClientApplication } from '@azure/msal-browser';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations: [
AppComponent,
],
imports: [
MsalModule.forRoot( new PublicClientApplication({
// MSAL Configuration
}), {
// MSAL Guard Configuration
interactionType: InteractionType.Redirect,
authRequest: {
scopes: ['user.read']
},
loginFailedRoute: '/login-failed'
}, {
// MSAL Interceptor Configurations
}),
AppRoutingModule
],
providers: [
// ...
MsalGuard
],
bootstrap: [AppComponent, MsalRedirectComponent]
})
export class AppModule { }
// app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { ProfileComponent } from './profile/profile.component';
import { MsalGuard } from '@azure/msal-angular';
const routes: Routes = [
{
path: 'profile',
component: ProfileComponent,
canActivate: [MsalGuard]
},
{
path: '',
component: HomeComponent
},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Interakció típusa
Az interakció típusának beállítása határozza meg, hogy a MsalGuard rendszer hogyan kéri interaktívan a bejelentkezést. A InteractionType importálható innen: @azure/msal-browser, és Popup vagy Redirect értékre állítható.
Választható hitelesítés
Az opcionális authRequest egy haladó funkció, amely nem kötelező. Javasoljuk azonban, hogy a scopes használatával állítsa be a authRequest elemet a(z) MsalGuardConfiguration helyen, hogy a hatókörökre vonatkozó hozzájárulás előre beszerezhető legyen. Ha a(z) scopes használatához szükséges hozzájárulást nem adják meg előre, a hatókörök fokozatosan is kérhetők. Ez azt eredményezheti, hogy a hozzájárulási párbeszéd többször is megjelenik az alkalmazás felhasználója számára.
A hatókörök előzetes jóváhagyása a fenti kódmintákban és a mintáinkban is látható.
A kérelemobjektum összes lehetséges paramétere itt található: PopupRequest és RedirectRequest.
Sikertelen bejelentkezés útvonala
A loginFailedRoute karakterlánc beállítható a(z) MsalGuardConfiguration elemen. A MsalGuard rendszer átirányítja erre az útvonalra, ha bejelentkezés szükséges és sikertelen.
Az Angular-minta példákat mutat be a konfigurációs és alkalmazás-útválasztási modulban való implementálására.
Vegye figyelembe, hogy a sikertelen átirányítás nem érhető el azon Angular 9-alkalmazások esetében, amelyek alaptípus-különbségek miatt használják az CanLoad interfészt.
Interfaces
A canActivate mellett a MsalGuard a canActivateChild és canLoad felületet is megvalósítja, és ezek hozzáadhatók az útvonaldefiníciókhoz az app-routing.module.ts fájlban. Ezeket a régebbi MSAL Angular v2 Angular 11 mintaalkalmazásban, valamint alább is láthatja. A felületekkel kapcsolatos további információkért lásd az Angular-dokumentációt.
const routes: Routes = [
{
path: 'profile',
canActivateChild: [MsalGuard],
children: [
{
path: '',
component: ProfileComponent
},
{
path: 'detail',
component: DetailComponent
}
]
},
{
path: 'lazyLoad',
loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule),
canLoad: [MsalGuard]
},
];
Az MSAL Guard használata során megfontolandó szempontok
Az MSAL Guard használata a kezdőlapon
Ha azt szeretné, hogy a felhasználókat az alkalmazás elérésekor bejelentkezésre kérje a rendszer, javasoljuk, hogy a MsalGuard elemet a kezdeti oldalon állítsa be. Nem javasoljuk a app.component.tsngOnInit elemében a login meghívását, mivel ez átirányítási hurkot okozhat.
További javaslataink az útválasztási stratégiától függenek, és az alábbi szakaszokban találhatók.
Az MSAL Guard használata útvonal-útválasztással
Ha az Angular-alkalmazásában az PathLocationStrategy-t és az átirányításokat használja, javasoljuk, hogy az átirányításokhoz külön útvonalat használjon, mert ez segít megelőzni az átirányítási ciklusok kialakulását. Ennek az útvonalnak kell lennie az Ön redirectUri útvonalának is, és a MsalGuard nem védheti.
const routes: Routes = [
{
path: 'profile',
component: ProfileComponent,
canActivate: [MsalGuard]
},
{
// Dedicated route for redirects
path: 'auth',
component: MsalRedirectComponent
},
{
path: '',
component: HomeComponent
}
];
Ha azt szeretné, hogy a felhasználók be legyenek jelentkeztetve, amikor elérik az alkalmazását, a(z) PathLocationStrategy használatakor a következőket javasoljuk:
- A
MsalGuardbeállítása a kezdőoldalon - Állítsa a(z)
redirectUrielemet erre:'http://localhost:4200/auth' - Egy
'auth'útvonal hozzáadása az útvonalakhoz, aMsalRedirectComponentbeállítása komponensként (ezt az útvonalat nem szabad a(z)MsalGuardelemmel védeni) - Győződjön meg arról, hogy a
MsalRedirectComponentinicializálva van - Opcionálisan: ha az összes útvonalat védeni szeretné, adja hozzá
MsalGuardaz összes útvonalhoz
Angular Modules-mintánk a PathLocationStrategy használja, és bemutatja, hogyan lehet az útvonalakat a MsalGuard segítségével védeni.
Az MSAL Guard használata hash alapú útválasztással
Amikor a(z) HashLocationStrategy elemet az Angular-alkalmazásával használja, határozottan javasoljuk, hogy állítson be helyőrző útvonalakat (például /code) a app-routing.module.ts fájlban, hogy megakadályozza az Angular Router aktiválódását, amikor a Microsoft Entra ID a hitelesítési kódot tartalmazó választ a kivonatban adja vissza, mivel ellenkező esetben problémákba ütközhet a hitelesítés befejezése során. Ezeket a helyőrző útvonalakat nem szabad a(z) MsalGuard elemmel védeni, és nem szabad olyan összetevőre mutatniuk, amely az oldal betöltésekor interakciót indít, vagy védett API-hívásokat kezdeményez.
const routes: Routes = [
{
path: 'profile',
component: ProfileComponent,
canActivate: [MsalGuard]
},
{
// Needed for hash routing
path: 'code',
component: HomeComponent
},
{
path: '',
component: HomeComponent
}
];
Az MSAL-konfigurációban a(z) redirectUri értékét szintén a kezdőlapra kell állítani.
Ha azt szeretné, hogy a felhasználók be legyenek jelentkeztetve, amikor elérik az alkalmazását, a(z) HashLocationStrategy használatakor a következőket javasoljuk:
- A
MsalGuardbeállítása a kezdőoldalon - A(z)
MsalGuardnincs beállítva a helyőrző útvonalakon (pl./code,/error) - Győződjön meg arról, hogy a
MsalRedirectComponentinicializálva van - Opcionálisan: ha az összes útvonalat védeni szeretné, adja hozzá
MsalGuardaz összes többi útvonalhoz
Tekintse meg a korábbi, MSAL Angular v2-höz készült Angular 11-mintánkat, amely a(z) HashLocationStrategy használja, és bemutatja, hogyan védhetők az útvonalak a(z) MsalGuard használatával.
Msal-angular v1 és v2 közötti változások
-
Konfiguráció:
MsalAngularConfigurationelavult, és már nem működik. AMsalGuardkonfigurálása most már aMsalGuardConfigurationsegítségével történik. -
Felületek:
MsalGuardmostantól aCanActivatemellett aCanActivateChildés aCanLoadfelületet is implementálja. További részletekért lásd a fentiInterfacesszakaszt. -
Átirányítás hiba esetén: a
MsalGuardkonfiguráció mostantól rendelkezik egyloginFailedRouteelemmel, amely konfigurálható. A részletekért tekintse meg aloginFailedRoutefenti szakaszt.