Hitelesítés konfigurálása egy egyoldalas Angular-mintaalkalmazásban az Azure Active Directory B2C használatával
Ez a cikk egy egyoldalas Angular-mintaalkalmazást (SPA) használ az Azure Active Directory B2C (Azure AD B2C) hitelesítés hozzáadásához az Angular-alkalmazásokhoz.
Áttekintés
OpenID Connect (OIDC) is an authentication protocol built on OAuth 2.0 that you can use to securely sign in a user to an application. Ez az Angular-minta az MSAL Angulart és az MSAL Böngészőt használja. Az MSAL egy Microsoft által biztosított kódtár, amely leegyszerűsíti a hitelesítési és engedélyezési támogatás hozzáadását az Angular SPA-khoz.
Bejelentkezési folyamat
A bejelentkezési folyamat a következő lépéseket foglalja magában:
- A felhasználó megnyitja az alkalmazást, és kiválasztja a Bejelentkezés lehetőséget.
- Az alkalmazás elindít egy hitelesítési kérelmet, és átirányítja a felhasználót az Azure AD B2C-be.
- A felhasználó regisztrál vagy bejelentkezik , és alaphelyzetbe állítja a jelszót, vagy bejelentkezik egy közösségi fiókkal.
- Sikeres bejelentkezés esetén az Azure AD B2C egy engedélyezési kódot ad vissza az alkalmazásnak. Az alkalmazás a következő műveleteket hajtja végre:
- Kicseréli az azonosító jogkivonat engedélyezési kódját, a hozzáférési jogkivonatot és a frissítési jogkivonatot.
- Beolvassa az azonosító jogkivonat jogcímeit.
- A hozzáférési jogkivonatot és a frissítési jogkivonatot egy memóriabeli gyorsítótárban tárolja későbbi használatra. A hozzáférési jogkivonat lehetővé teszi, hogy a felhasználó védett erőforrásokat, például webes API-t hívjon meg. A frissítési jogkivonat egy új hozzáférési jogkivonat beszerzésére szolgál.
Alkalmazásregisztráció
Ahhoz, hogy az alkalmazás bejelentkezhessen az Azure AD B2C-vel, és meghívjon egy webes API-t, két alkalmazást kell regisztrálnia az Azure AD B2C-bérlőben:
Az egyoldalas alkalmazás (Angular) regisztrációjával az alkalmazás bejelentkezhet az Azure AD B2C-vel. Az alkalmazásregisztráció során meg kell adnia az átirányítási URI-t. Az átirányítási URI az a végpont, amelyre a rendszer átirányítja a felhasználót az Azure AD B2C-vel való hitelesítés után. Az alkalmazásregisztrációs folyamat létrehoz egy alkalmazásazonosítót, más néven ügyfél-azonosítót, amely egyedileg azonosítja az alkalmazást. Ez a cikk az 1. példaalkalmazás-azonosítót használja.
A webes API-regisztrációval az alkalmazás meghívhat egy védett webes API-t. A regisztráció elérhetővé teszi a webes API-engedélyeket (hatóköröket). Az alkalmazásregisztrációs folyamat létrehoz egy alkalmazásazonosítót, amely egyedileg azonosítja a webes API-t. Ez a cikk a 2. példaalkalmazás-azonosítót használja. Adjon engedélyt az alkalmazásnak (alkalmazásazonosító: 1) a webes API-hatókörökhöz (alkalmazásazonosító: 2).
Az alábbi ábra az alkalmazásregisztrációkat és az alkalmazásarchitektúrát ismerteti.
Webes API meghívása
A hitelesítés befejezése után a felhasználók kapcsolatba lépnek az alkalmazással, amely egy védett webes API-t hív meg. A webes API tulajdonosi jogkivonat-hitelesítést használ. A tulajdonosi jogkivonat az az alkalmazás által az Azure AD B2C-ből beszerzett hozzáférési jogkivonat. Az alkalmazás átadja a jogkivonatot a HTTPS-kérés engedélyezési fejlécében.
Authorization: Bearer <access token>
Ha a hozzáférési jogkivonat hatóköre nem egyezik a webes API hatóköreivel, a hitelesítési kódtár egy új hozzáférési jogkivonatot szerez be a megfelelő hatókörökkel.
Kijelentkezés folyamata
A kijelentkezés folyamata a következő lépésekből áll:
- Az alkalmazásból a felhasználók kijelentkeznek.
- Az alkalmazás törli a munkamenet-objektumokat, a hitelesítési tár pedig törli a jogkivonat-gyorsítótárát.
- Az alkalmazás az Azure AD B2C bejelentkezési végpontra viszi a felhasználókat az Azure AD B2C-munkamenet leállításához.
- A rendszer visszairányítja a felhasználókat az alkalmazásba.
Előfeltételek
A cikkben ismertetett eljárások követése előtt győződjön meg arról, hogy a számítógép fut:
- Visual Studio Code vagy bármely más kódszerkesztő.
- Node.js futtatókörnyezet és npm.
- Angular CLI.
1. lépés: A felhasználói folyamat konfigurálása
Amikor a felhasználók megpróbálnak bejelentkezni az alkalmazásba, az alkalmazás elindít egy hitelesítési kérést az engedélyezési végponthoz egy felhasználói folyamaton keresztül. A felhasználói folyamat határozza meg és szabályozza a felhasználói élményt. Miután a felhasználók befejezték a felhasználói folyamatot, az Azure AD B2C létrehoz egy jogkivonatot, majd visszairányítja a felhasználókat az alkalmazásba.
Ha még nem tette meg, hozzon létre egy felhasználói folyamatot vagy egy egyéni szabályzatot. Ismételje meg a lépéseket három különálló felhasználói folyamat létrehozásához az alábbiak szerint:
- Kombinált bejelentkezés és felhasználói folyamat regisztrálása , például
susi
. Ez a felhasználói folyamat az Elfelejtett jelszó funkciót is támogatja. - Profilszerkesztési felhasználói folyamat, például
edit_profile
. - Új jelszó kérése felhasználói folyamat, például
reset_password
.
Az Azure AD B2C előre fel van függve B2C_1_
a felhasználói folyamat nevére. Például a susi
következő lesz B2C_1_susi
: .
2. lépés: Az Angular SPA és API regisztrálása
Ebben a lépésben létrehozza az Angular SPA és a webes API-alkalmazás regisztrációit. Megadhatja a webes API hatóköreit is.
2.1 A webes API-alkalmazás regisztrálása
A webes API-alkalmazásregisztráció létrehozásához (alkalmazásazonosító: 2) kövesse az alábbi lépéseket:
Jelentkezzen be az Azure Portalra.
Győződjön meg arról, hogy az Azure AD B2C-bérlőt tartalmazó könyvtárat használja. Válassza a Címtárak + előfizetések ikont a portál eszköztárán.
A Portál beállításai | Címtárak + előfizetések lap, keresse meg az Azure AD B2C-címtárat a címtárnévlistában, majd válassza a Váltás lehetőséget.
Az Azure Portalon keresse meg és válassza ki az Azure AD B2C-t.
Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.
A Név mezőbe írja be az alkalmazás nevét (például my-api1). Hagyja meg az átirányítási URI és a támogatott fióktípusok alapértelmezett értékeit.
Válassza a Regisztrálás lehetőséget.
Az alkalmazásregisztráció befejezése után válassza az Áttekintés lehetőséget.
Jegyezze fel az alkalmazás (ügyfél) azonosítóját a webalkalmazás konfigurálásakor későbbi használatra.
2.2 Hatókörök konfigurálása
Válassza ki a létrehozott my-api1 alkalmazást (alkalmazásazonosító: 2) az Áttekintés lap megnyitásához.
A Kezelés területen válassza az API-k felfedése lehetőséget.
Az alkalmazásazonosító URI-ja mellett válassza a Hivatkozás beállítása lehetőséget. Cserélje le az alapértelmezett értéket (GUID) egy egyedi névre (például tasks-api), majd válassza a Mentés lehetőséget.
Amikor a webalkalmazás hozzáférési jogkivonatot kér a webes API-hoz, ezt az URI-t kell hozzáadnia az API-hoz definiált hatókörök előtagjaként.
Az API által definiált hatókörök alatt válassza a Hatókör hozzáadása lehetőséget.
Az API olvasási hozzáférését meghatározó hatókör létrehozása:
- A hatókör neveként adja meg a tasks.read nevet.
- Ha Rendszergazda hozzájárulás megjelenítendő nevét, írja be a Feladatok API olvasási hozzáférését.
- A Rendszergazda hozzájárulás leírásához írja be A feladatok API olvasási hozzáférésének engedélyezése című cikket.
Válassza a Hatókör hozzáadása lehetőséget.
Válassza a Hatókör hozzáadása lehetőséget, majd adjon hozzá egy, az API írási hozzáférését meghatározó hatókört:
- A Hatókör neve mezőbe írja be a tasks.write nevet.
- Ha Rendszergazda hozzájárulás megjelenítendő nevét szeretné megadni, írja be a Feladatok API írási hozzáférését.
- A Rendszergazda hozzájárulás leírásához írja be a Tevékenység API írási hozzáférését.
Válassza a Hatókör hozzáadása lehetőséget.
2.3 Az Angular-alkalmazás regisztrálása
Kövesse az alábbi lépéseket az Angular-alkalmazásregisztráció létrehozásához:
- Jelentkezzen be az Azure Portalra.
- Ha több bérlőhöz is hozzáfér, a felső menüben válassza a Gépház ikont az Azure AD B2C-bérlőre való váltáshoz a Címtárak + előfizetések menüből.
- Az Azure Portalon keresse meg és válassza ki az Azure AD B2C-t.
- Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.
- A Név mezőbe írja be az alkalmazás nevét. Írja be például a MyAppot.
- A Támogatott fióktípusok területen válassza a Fiókok lehetőséget bármely identitásszolgáltatóban vagy szervezeti címtárban (a felhasználók felhasználói folyamatokkal való hitelesítéséhez).
- Az Átirányítási URI területen válassza az Egyoldalas alkalmazás (SPA) lehetőséget, majd írja be
http://localhost:4200
az URL-címet. - Az Engedélyek csoportban jelölje be a Rendszergazdai hozzájárulás megadása az openid és offline hozzáférési engedélyekhez jelölőnégyzetet.
- Válassza a Regisztrálás lehetőséget.
- Jegyezze fel az alkalmazás (ügyfél) azonosítójának értékét a webalkalmazás konfigurálásakor egy későbbi lépésben.
2.5 Engedélyek megadása
Az alkalmazás (alkalmazásazonosító: 1) engedélyének megadásához kövesse az alábbi lépéseket:
Válassza Alkalmazásregisztrációk, majd válassza ki a létrehozott alkalmazást (alkalmazásazonosító: 1).
A Kezelés területen válassza ki az API-engedélyeket.
A Konfigurált engedélyek csoportban válassza az Engedély hozzáadása lehetőséget.
Válassza a Saját API-k lapot.
Válassza ki azt az API-t (alkalmazásazonosító: 2), amelyhez a webalkalmazásnak hozzáférést kell biztosítani. Írja be például a my-api1 nevet.
Az Engedély területen bontsa ki a tevékenységeket, majd válassza ki a korábban definiált hatóköröket (például tasks.read és tasks.write).
Jelölje be az Engedélyek hozzáadása lehetőséget.
Válassza a bérlő nevének> rendszergazdai <hozzájárulásának megadása lehetőséget.
Válassza az Igen lehetőséget.
Válassza a Frissítés lehetőséget, majd ellenőrizze, hogy a megadott for ... jelenik-e meg mindkét hatókör állapotában .
A Konfigurált engedélyek listájában válassza ki a hatókört, majd másolja a teljes nevet a hatókörbe.
3. lépés: Az Angular-mintakód lekérése
Ez a minta bemutatja, hogy egy Angular egyoldalas alkalmazás hogyan használhatja az Azure AD B2C-t a felhasználói regisztrációhoz és a bejelentkezéshez. Ezután az alkalmazás beszerez egy hozzáférési jogkivonatot, és meghív egy védett webes API-t.
Töltse le a minta .zip fájlját , vagy klónozza a mintát a GitHub-adattárból az alábbi paranccsal:
git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git
3.1 Az Angular-minta konfigurálása
Most, hogy beszerezte az SPA-mintát, frissítse a kódot az Azure AD B2C-vel és a webes API-értékekkel. A mintamappában, az src/app mappa alatt nyissa meg az auth-config.ts fájlt. Frissítse a kulcsokat a megfelelő értékekkel:
Section | Key | Érték |
---|---|---|
b2cPolicies | Nevek | Az 1. lépésben létrehozott felhasználói folyamat vagy egyéni szabályzat. |
b2cPolicies | Hatóságok | Cserélje le your-tenant-name az Azure AD B2C-bérlő nevét. Használja például a következőt contoso.onmicrosoft.com : . Ezután cserélje le a szabályzat nevét az 1. lépésben létrehozott felhasználói folyamatra vagy egyéni szabályzatra. For example: https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-sign-in-sign-up-policy> . |
b2cPolicies | authorityDomain | Az Azure AD B2C-bérlő neve. For example: contoso.onmicrosoft.com . |
Konfiguráció | clientId | Az Angular-alkalmazás azonosítója a 2.3. lépésből. |
protectedResources | endpoint | A webes API URL-címe: http://localhost:5000/api/todolist . |
protectedResources | hatókörök | A 2.2. lépésben létrehozott webes API-hatókörök. For example: b2cScopes: ["https://<your-tenant-name>.onmicrosoft.com/tasks-api/tasks.read"] . |
Az eredményül kapott src/app/auth-config.ts kódnak az alábbi mintához hasonlóan kell kinéznie:
export const b2cPolicies = {
names: {
signUpSignIn: "b2c_1_susi_reset_v2",
editProfile: "b2c_1_edit_profile_v2"
},
authorities: {
signUpSignIn: {
authority: "https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/b2c_1_susi_reset_v2",
},
editProfile: {
authority: "https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/b2c_1_edit_profile_v2"
}
},
authorityDomain: "your-tenant-name.b2clogin.com"
};
export const msalConfig: Configuration = {
auth: {
clientId: '<your-MyApp-application-ID>',
authority: b2cPolicies.authorities.signUpSignIn.authority,
knownAuthorities: [b2cPolicies.authorityDomain],
redirectUri: '/',
},
// More configuration here
}
export const protectedResources = {
todoListApi: {
endpoint: "http://localhost:5000/api/todolist",
scopes: ["https://your-tenant-namee.onmicrosoft.com/api/tasks.read"],
},
}
4. lépés: A webes API mintakódjának lekérése
Most, hogy a webes API regisztrálva lett, és ön definiálta a hatóköreit, konfigurálja a webes API-kódot az Azure AD B2C-bérlővel való együttműködéshez.
Töltsön le egy *.zip archívumot, vagy klónozza a minta webes API-projektet a GitHubról. A GitHubon közvetlenül is tallózhat az Azure-Samples/active-directory-b2c-javascript-nodejs-webapi projekthez a következő paranccsal:
git clone https://github.com/Azure-Samples/active-directory-b2c-javascript-nodejs-webapi.git
4.1 A webes API konfigurálása
A mintamappában nyissa meg a config.json fájlt. Ez a fájl az Azure AD B2C identitásszolgáltatójáról tartalmaz információkat. A web API-alkalmazás ezen információk alapján ellenőrzi a webalkalmazás által tulajdonosi jogkivonatként áthaladó hozzáférési jogkivonatot. Frissítse az alkalmazásbeállítások alábbi tulajdonságait:
Section | Key | Érték |
---|---|---|
hitelesítő adatok | tenantName | Az Azure AD B2C-bérlő nevének első része. For example: contoso . |
hitelesítő adatok | clientID | A web API-alkalmazás azonosítója a 2.1. lépésből. A korábbi ábrán ez az alkalmazás a következő alkalmazásazonosítóval: 2. |
hitelesítő adatok | Kibocsátó | (Nem kötelező) A jogkivonat-kiállító iss jogcímértéke. Az Azure AD B2C alapértelmezés szerint a következő formátumban adja vissza a jogkivonatot: https://<your-tenant-name>.b2clogin.com/<your-tenant-ID>/v2.0/ . Cserélje le <your-tenant-name> az Azure AD B2C-bérlő nevének első részére. Cserélje le <your-tenant-ID> az Azure AD B2C-bérlőazonosítóját. |
policies | policyName | Az 1. lépésben létrehozott felhasználói folyamat vagy egyéni szabályzat. Ha az alkalmazás több felhasználói folyamatot vagy egyéni szabályzatot használ, csak egyet adjon meg. Használja például a regisztrációs vagy bejelentkezési felhasználói folyamatot. |
erőforrás | scope | A web API-alkalmazásregisztráció hatókörei a 2.5. lépésből. |
A végső konfigurációs fájlnak a következő JSON-fájlhoz hasonlóan kell kinéznie:
{
"credentials": {
"tenantName": "<your-tenant-namee>",
"clientID": "<your-webapi-application-ID>",
"issuer": "https://<your-tenant-name>.b2clogin.com/<your-tenant-ID>/v2.0/"
},
"policies": {
"policyName": "b2c_1_susi"
},
"resource": {
"scope": ["tasks.read"]
},
// More settings here
}
5. lépés: Az Angular SPA és a webes API futtatása
Most már tesztelheti az Angular hatókörű hozzáférését az API-hoz. Ebben a lépésben futtassa a webes API-t és a minta Angular-alkalmazást a helyi gépen. Ezután jelentkezzen be az Angular-alkalmazásba, és válassza a TodoList gombot a védett API-ra irányuló kérés indításához.
A webes API futtatása
Nyisson meg egy konzolablakot, és váltson a webes API-mintát tartalmazó könyvtárra. Például:
cd active-directory-b2c-javascript-nodejs-webapi
Run the following commands:
npm install && npm update node index.js
A konzolablakban megjelenik az alkalmazás helyének portszáma:
Listening on port 5000...
Az Angular-alkalmazás futtatása
Nyisson meg egy másik konzolablakot, és váltson az Angular-mintát tartalmazó könyvtárra. Például:
cd ms-identity-javascript-angular-tutorial-main/3-Authorization-II/2-call-api-b2c/SPA
Run the following commands:
npm install && npm update npm start
A konzolablak megjeleníti az alkalmazás helyének portszámát:
Listening on port 4200...
Nyissa meg
http://localhost:4200
a böngészőben az alkalmazást.Válassza Bejelentkezés lehetőséget.
Fejezze be a regisztrációs vagy bejelentkezési folyamatot.
A sikeres bejelentkezés után meg kell jelennie a profiljának. A menüben válassza a TodoList lehetőséget.
A Hozzáadás gombra kattintva új elemeket vehet fel a listára, vagy az ikonok használatával törölheti vagy szerkesztheti az elemeket.
Az alkalmazás üzembe helyezése
Éles alkalmazásokban az alkalmazásregisztráció átirányítási URI-ja általában egy nyilvánosan elérhető végpont, ahol az alkalmazás fut, például https://contoso.com
.
A regisztrált alkalmazásokban bármikor hozzáadhat és módosíthat átirányítási URI-kat. Az átirányítási URI-kra a következő korlátozások vonatkoznak:
- A válasz URL-címnek a sémával
https
kell kezdődnie. - A válasz URL-címe megkülönbözteti a kis- és nagybetűkre vonatkozó adatokat. Az esetnek meg kell egyeznie a futó alkalmazás URL-elérési útjának esetével.