Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:
A munkaerő-bérlők
Külső bérlők (további információ)
Ez az oktatóanyag egy olyan sorozat első része, amely bemutatja egy Angular egyoldalas alkalmazás (SPA) kiépítését, a hitelesítés hozzáadását és a felhasználói adatok microsoftos identitásplatform használatával történő kinyerését.
Ebben az útmutatóban Ön:
- Új Angular-projekt létrehozása
- Az alkalmazás beállításainak konfigurálása
- Hitelesítési kód hozzáadása az alkalmazáshoz
Előfeltételek
- Munkaerőt igénybe vevő. Használhatja az alapértelmezett címtárat , vagy beállíthat egy új bérlőt.
- Regisztráljon egy új alkalmazást a Microsoft Entra felügyeleti központban, amely csak ebben a szervezeti címtárban lévő fiókokhoz van konfigurálva. További részletekért tekintse meg az alkalmazás regisztrálását . Jegyezze fel a következő értékeket az alkalmazás áttekintési oldaláról későbbi használatra:
- Alkalmazás (ügyfél) azonosítója
- Címtár (ügyfél) azonosítója
- Adja hozzá az alábbi átirányítási URI-kat az egyoldalas alkalmazásplatform konfigurációjának használatával. További részletekért tekintse meg az átirányítási URI hozzáadását az alkalmazásban .
-
Átirányítási URI:
http://localhost:4200/.
-
Átirányítási URI:
- Szögletes parancssori felület
- Node.js 18.19 vagy újabb.
- Visual Studio Code vagy más kódszerkesztő.
Új Angular-projekt létrehozása
Ebben a szakaszban egy új Angular-projektet fog létrehozni a Visual Studio Code Angular CLI-jének használatával. A bérlő típusa alapján válassza ki a megfelelő lapot.
Az Angular-projekt alapoktól való létrehozásához kövesse az alábbi lépéseket:
Nyisson meg egy terminálablakot, és futtassa a következő parancsot egy új Angular-projekt létrehozásához:
ng new msal-angular-tutorial --routing=true --style=css --strict=falseA parancs létrehoz egy új Angular-projektet, amelyben engedélyezve van az
msal-angular-tutorialútválasztás, CSS a stílushoz és a szigorú mód letiltva van.Válts a projektkönyvtárra:
cd msal-angular-tutorialAlkalmazásfüggőségek telepítése:
npm install @azure/msal-browser @azure/msal-angular bootstrapA parancs
npm install @azure/msal-browser @azure/msal-angular bootstraptelepíti az Azure MSAL böngészőt, az Azure MSAL Angulart és a Bootstrap-csomagokat.Nyissa meg
angular.jsonés adja hozzá a Bootstrap CSS-elérési útját astylestömbhöz:"styles": [ "src/styles.css", "node_modules/bootstrap/dist/css/bootstrap.min.css" ],A kód hozzáadja a Bootstrap CSS-t a fájl stílustömbjéhez
angular.json.Otthoni és profilösszetevők létrehozása:
ng generate component home ng generate component profileA parancsok az Angular-projekt kezdőlap- és profilösszetevőit generálják.
Távolítsa el a felesleges fájlokat és kódot a projektből:
rm src/app/app.component.css rm src/app/app.component.spec.ts rm src/app/home/home.component.css rm src/app/home/home.component.spec.ts rm src/app/profile/profile.component.css rm src/app/profile/profile.component.spec.tsA parancsok eltávolítják a felesleges fájlokat és kódot a projektből.
Nevezze át a(z)
app.routes.ts-tapp-routing.module.ts-re a Visual Studio Code segítségével, és frissítse az alkalmazásban a(z)app.routes.tsösszes hivatkozását.Nevezze át a
app.config.tselemetapp.module.tsnévre a Visual Studio Code használatával, és frissítse az alkalmazásban aapp.config.tsösszes hivatkozását.
A lépések elvégzése után a projekt struktúrájának a következőképpen kell kinéznie:
.
├── README.md
├── angular.json
├── package-lock.json
├── package.json
├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── home
│ │ │ ├── home.component.html
│ │ │ └── home.component.ts
│ │ └── profile
│ │ ├── profile.component.html
│ │ └── profile.component.ts
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ └── styles.css
├── tsconfig.app.json
└── tsconfig.json
Alkalmazásbeállítások konfigurálása
Ebben a szakaszban az alkalmazásbeállításokat fogja konfigurálni a hitelesítéshez. Az alkalmazás regisztrációja során rögzített értékeket fogjuk használni az alkalmazás hitelesítésre való konfigurálásához. A bérlő típusa alapján válassza ki a megfelelő lapot.
Az alkalmazás regisztrációja során rögzített értékeket fogjuk használni az alkalmazás hitelesítésre való konfigurálásához. Tegye a következők egyikét:
Nyissa meg a
src/app/app.module.tsfájlt, és cserélje le a tartalmat a következő kódra:// Required for Angular multi-browser support import { BrowserModule } from '@angular/platform-browser'; // Required for Angular import { NgModule } from '@angular/core'; // Required modules and components for this application import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { ProfileComponent } from './profile/profile.component'; import { HomeComponent } from './home/home.component'; // HTTP modules required by MSAL import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; // Required for MSAL import { IPublicClientApplication, PublicClientApplication, InteractionType, BrowserCacheLocation, LogLevel } from '@azure/msal-browser'; import { MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent } from '@azure/msal-angular'; const isIE = window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1; export function MSALInstanceFactory(): IPublicClientApplication { return new PublicClientApplication({ auth: { // 'Application (client) ID' of app registration in the Microsoft Entra admin center - this value is a GUID clientId: "Enter_the_Application_Id_Here", // Full directory URL, in the form of https://login.microsoftonline.com/<tenant> authority: "https://login.microsoftonline.com/Enter_the_Tenant_Info_Here", // Must be the same redirectUri as what was provided in your app registration. redirectUri: "http://localhost:4200", }, cache: { cacheLocation: BrowserCacheLocation.LocalStorage, storeAuthStateInCookie: isIE } }); } // MSAL Interceptor is required to request access tokens in order to access the protected resource (Graph) export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { const protectedResourceMap = new Map<string, Array<string>>(); protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']); return { interactionType: InteractionType.Redirect, protectedResourceMap }; } // MSAL Guard is required to protect routes and require authentication before accessing protected routes export function MSALGuardConfigFactory(): MsalGuardConfiguration { return { interactionType: InteractionType.Redirect, authRequest: { scopes: ['user.read'] } }; } // Create an NgModule that contains the routes and MSAL configurations @NgModule({ declarations: [ AppComponent, HomeComponent, ProfileComponent ], imports: [ BrowserModule, AppRoutingModule, HttpClientModule, MsalModule ], providers: [ { provide: HTTP_INTERCEPTORS, useClass: MsalInterceptor, multi: true }, { provide: MSAL_INSTANCE, useFactory: MSALInstanceFactory }, { provide: MSAL_GUARD_CONFIG, useFactory: MSALGuardConfigFactory }, { provide: MSAL_INTERCEPTOR_CONFIG, useFactory: MSALInterceptorConfigFactory }, MsalService, MsalGuard, MsalBroadcastService ], bootstrap: [AppComponent, MsalRedirectComponent] }) export class AppModule { }A kód beállítja az MSAL-t a felhasználói hitelesítéshez és az API-védelemhez. Konfigurálja az alkalmazást
MsalInterceptoraz API-kérések biztonságossá tételéhez ésMsalGuardaz útvonalak védelméhez, miközben meghatározza a hitelesítéshez szükséges fő összetevőket és szolgáltatásokat. Cserélje le a következő értékeket a Microsoft Entra adminisztrációs központ értékeire.- Cserélje le
Enter_the_Application_Id_HereazApplication (client) IDalkalmazásregisztrációból származóra. - Cserélje le
Enter_the_Tenant_Info_HereazDirectory (tenant) IDalkalmazásregisztrációból származóra.
- Cserélje le
Mentse a fájlt.
Hitelesítési kód hozzáadása az alkalmazáshoz
Ebben a szakaszban hitelesítési kódot fog hozzáadni az alkalmazáshoz a felhasználói hitelesítés és a munkamenet-kezelés kezeléséhez. A bérlő típusa alapján válassza ki a megfelelő lapot.
Nyissa meg
src/app/app.component.tsa fájlt, és cserélje le a tartalmat a következő kódra:// Required for Angular import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; // Required for MSAL import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; import { EventMessage, EventType, InteractionStatus, RedirectRequest } from '@azure/msal-browser'; // Required for RJXS import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; @Component({ selector: 'app-root', templateUrl: './app.component.html' }) export class AppComponent implements OnInit, OnDestroy { title = 'Angular - MSAL Example'; loginDisplay = false; tokenExpiration: string = ''; private readonly _destroying$ = new Subject<void>(); constructor( @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private authService: MsalService, private msalBroadcastService: MsalBroadcastService ) { } // On initialization of the page, display the page elements based on the user state ngOnInit(): void { this.msalBroadcastService.inProgress$ .pipe( filter((status: InteractionStatus) => status === InteractionStatus.None), takeUntil(this._destroying$) ) .subscribe(() => { this.setLoginDisplay(); }); // Used for storing and displaying token expiration this.msalBroadcastService.msalSubject$.pipe(filter((msg: EventMessage) => msg.eventType === EventType.ACQUIRE_TOKEN_SUCCESS)).subscribe(msg => { this.tokenExpiration= (msg.payload as any).expiresOn; localStorage.setItem('tokenExpiration', this.tokenExpiration); }); } // If the user is logged in, present the user with a "logged in" experience setLoginDisplay() { this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; } // Log the user in and redirect them if MSAL provides a redirect URI otherwise go to the default URI login() { if (this.msalGuardConfig.authRequest) { this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest); } else { this.authService.loginRedirect(); } } // Log the user out logout() { this.authService.logoutRedirect(); } ngOnDestroy(): void { this._destroying$.next(undefined); this._destroying$.complete(); } }A kód integrálja az MSAL-t az Angularlal a felhasználói hitelesítés kezeléséhez. Figyeli a bejelentkezési állapot változásait, megjeleníti a bejelentkezési állapotot, kezeli a jogkivonat-beszerzési eseményeket, és a Microsoft Entra konfigurációja alapján metódusokat biztosít a felhasználók be- és kijelentkezésére.
Mentse a fájlt.