Hitelesítés konfigurálása egy minta webalkalmazásban, amely webes API-t hív meg az Azure AD B2C használatával
Ez a cikk egy minta ASP.NET webalkalmazást használ, amely webes API-t hív meg, hogy bemutassa, hogyan adhat hozzá Azure Active Directory B2C-hitelesítést a webalkalmazásokhoz.
Fontos
A cikkben hivatkozott minta ASP.NET webalkalmazás egy tulajdonosi jogkivonattal rendelkező webes API meghívására szolgál. Ha egy webalkalmazás nem hív meg webes API-t, olvassa el a Hitelesítés konfigurálása minta webalkalmazásban az Azure AD B2C használatával című témakört.
Áttekintés
Az OpenID Csatlakozás (OIDC) egy olyan hitelesítési protokoll, amely az OAuth 2.0-ra épül. Az OIDC használatával biztonságosan bejelentkeztethet egy felhasználót egy alkalmazásba. Ez a webalkalmazás-minta a Microsoft Identity Webet használja. A Microsoft Identity Web ASP.NET Alapvető kódtárak készlete, amelyek leegyszerűsítik a biztonságos webes API-t meghívó webalkalmazások hitelesítési és engedélyezési támogatásának hozzáadását.
A bejelentkezési folyamat a következő lépéseket foglalja magában:
A felhasználók megnyitják a webalkalmazást, és kiválasztják a Bejelentkezés lehetőséget.
Az alkalmazás hitelesítési kérelmet kezdeményez, és átirányítja a felhasználókat az Azure AD B2C-be.
A felhasználók regisztrálnak vagy bejelentkeznek , és visszaállítják a jelszót. Másik lehetőségként egy közösségi fiókkal is bejelentkezhetnek.
Miután a felhasználók bejelentkeznek, az Azure AD B2C egy engedélyezési kódot ad vissza az alkalmazásnak.
Az alkalmazás ezután a következőket hajtja végre:
a. Az engedélyezési kódot azonosító jogkivonatra, hozzáférési jogkivonatra és frissítési jogkivonatra cseréli.
b. Beolvassa az azonosító jogkivonat jogcímeit, és megőrzi az alkalmazás-engedélyezési cookie-t.
c. A frissítési jogkivonatot egy memóriabeli gyorsítótárban tárolja későbbi használatra.
Alkalmazásregisztráció áttekintése
Ahhoz, hogy az alkalmazás bejelentkezhessen az Azure AD B2C-vel, és meghívjon egy webes API-t, regisztráljon két alkalmazást az Azure AD B2C címtárban.
A webalkalmazás-regisztrációval az alkalmazás bejelentkezhet az Azure AD B2C-vel. A regisztráció során meg kell adnia az átirányítási URI-t. Az átirányítási URI az a végpont, amelyre az Azure AD B2C átirányítja a felhasználókat az Azure AD B2C-vel való hitelesítés befejezése 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. Emellett létrehoz egy ügyfélkulcsot is, amelyet az alkalmazás a jogkivonatok biztonságos beszerzéséhez használ.
A webes API-regisztráció lehetővé teszi, hogy az alkalmazás biztonságos webes API-t hívjon meg. A regisztráció tartalmazza a webes API-hatóköröket. A hatókörök lehetővé teszik a védett erőforrások, például a webes API engedélyeinek kezelését. A webalkalmazásnak engedélyt kell adnia a webes API-hatókörökhöz. Hozzáférési jogkivonat kérése esetén az alkalmazás megadja a kívánt engedélyeket a kérelem hatókörparaméterében.
Az alkalmazásarchitektúra és a regisztrációk az alábbi ábrán láthatóak:
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.
Sign-out
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
Egy számítógép, amely a következőt futtatja:
- Visual Studio 2022 17.0 vagy újabb verzió a ASP.NET és webfejlesztési számítási feladattal
- .NET 6.0 SDK
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: Webalkalmazások regisztrálása
Ebben a lépésben létrehozza a webalkalmazást és a webes API-alkalmazásregisztrációt, és megadja a webes API hatóköreit.
2.1. lépés: A web 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 ki a pénztárgépet.
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. lépés: Web API-alkalmazások hatóköreinek 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. lépés: A webalkalmazás regisztrálása
A webalkalmazás-regisztráció létrehozásához tegye a következőket:
Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.
A Név területen adja meg az alkalmazás nevét (például webapp1).
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 a Web lehetőséget, majd írja be
https://localhost:5000/signin-oidc
az URL-címet az URL-mezőbe.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 ki a pénztárgépet.
Az alkalmazásregisztráció befejezése után válassza az Áttekintés lehetőséget.
A webalkalmazás konfigurálásakor jegyezze fel az alkalmazás (ügyfél) azonosítóját későbbi használatra.
2.4. lépés: Webalkalmazás-ügyfélkód létrehozása
Hozzon létre egy ügyfélkulcsot a regisztrált webalkalmazáshoz. A webalkalmazás az ügyfél titkos kódjával igazolja személyazonosságát, amikor jogkivonatokat kér.
- A Kezelés területen válassza a Tanúsítványok és titkos kódok lehetőséget.
- Válassza az Új titkos ügyfélkód lehetőséget.
- A Leírás mezőbe írja be az ügyfél titkos kódjának leírását (például clientsecret1).
- A Lejáratok csoportban válassza ki azt az időtartamot, amelyre érvényes a titkos kód, majd válassza a Hozzáadás lehetőséget.
- Jegyezze fel a titkos kód értékét. Ezt az értéket egy későbbi lépésben fogja használni a konfigurációhoz.
2.5. lépés: A webalkalmazás engedélyeinek megadása a webes API-hoz
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: A webalkalmazás-minta lekérése
Töltse le a zip-fájlt, vagy futtassa a következő Bash-parancsot a minta webalkalmazás GitHubról való klónozásához.
git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2
Bontsa ki a mintafájlt egy olyan mappába, ahol az elérési út teljes hossza 260 vagy kevesebb karakter.
4. lépés: A minta webes API konfigurálása
A mintamappában, a 4-WebApp-your-API/4-2-B2C/TodoListService mappában nyissa meg a TodoListService.csproj projektet a Visual Studio vagy a Visual Studio Code használatával.
A projekt gyökérmappájában nyissa meg az appsettings.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:
Szakasz | Kulcs | Érték |
---|---|---|
AzureAdB2C | Példány | Az Azure AD B2C-bérlő nevének első része. For example, https://contoso.b2clogin.com . |
AzureAdB2C | Tartomány | Az Azure AD B2C-bérlő teljes bérlőjének neve. For example, contoso.onmicrosoft.com . |
AzureAdB2C | ClientID | A web API-alkalmazás azonosítója a 2.1. lépésből. |
AzureAdB2C | SignUpSignInPolicyId | Az 1. lépésben létrehozott felhasználói folyamatok vagy egyéni szabályzat. |
A végső konfigurációs fájlnak a következő JSON-fájlhoz hasonlóan kell kinéznie:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-api-app-application-id>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
// More settings here
}
4.1. lépés: Az engedélyházirend beállítása
A webes API ellenőrzi, hogy a felhasználó hitelesített-e a tulajdonosi jogkivonattal, és hogy a tulajdonosi jogkivonat rendelkezik-e a konfigurált elfogadott hatókörökkel. Ha a tulajdonosi jogkivonat nem rendelkezik az elfogadott hatókörök egyikével sem, a webes API a 403-es (Tiltott) HTTP-állapotkódot adja vissza, és egy üzenetet ír a válasz törzsének, amely közli, hogy mely hatókörök várhatók a jogkivonatban.
Az elfogadott hatókörök konfigurálásához nyissa meg az osztályt Controller/TodoListController.cs
, és állítsa be a hatókör nevét a teljes URI nélkül.
[RequiredScope("tasks.read")]
4.2. lépés: A minta web API-alkalmazás futtatása
Ha engedélyezni szeretné, hogy a webalkalmazás meghívja a webes API-mintát, futtassa a webes API-t a következő lépésekkel:
- Ha ezt kéri, állítsa vissza a függőségeket.
- Hozza létre és futtassa a projektet.
- A projekt létrehozása után a Visual Studio vagy a Visual Studio Code elindítja a webes API-t a böngészőkben a következő címmel: https://localhost:44332.
5. lépés: A minta webalkalmazás konfigurálása
A mintamappában, a 4-WebApp-your-API/4-2-B2C/Client
mappa alatt nyissa meg a TodoListClient.csproj projektet a Visual Studióval vagy a Visual Studio Code-tal.
A projekt gyökérmappájában nyissa meg a appsettings.json
fájlt. Ez a fájl az Azure AD B2C identitásszolgáltatójáról tartalmaz információkat. A webalkalmazás ezen információk alapján megbízhatósági kapcsolatot létesít az Azure AD B2C-vel, bejelentkezteti a felhasználókat és ki- és be, jogkivonatokat szerez be és érvényesít. Frissítse az alkalmazásbeállítások alábbi tulajdonságait:
Szakasz | Kulcs | Érték |
---|---|---|
AzureAdB2C | Példány | Az Azure AD B2C-bérlő nevének első része (például https://contoso.b2clogin.com ). |
AzureAdB2C | Tartomány | Az Azure AD B2C-bérlő teljes bérlőneve (például contoso.onmicrosoft.com ). |
AzureAdB2C | ClientID | A webalkalmazás azonosítója a 2.3. lépésből. |
AzureAdB2C | ClientSecret | A webalkalmazás titkos kódja a 2.4. lépésből. |
AzureAdB2C | SignUpSignInPolicyId | Az 1. lépésben létrehozott felhasználói folyamatok vagy egyéni szabályzat. |
TodoList | TodoListScope | A 2.5. lépésben létrehozott webes API-hatókörök. |
TodoList | TodoListBaseAddress | A webes API alap URI-ja (például https://localhost:44332 ). |
A végső konfigurációs fájlnak a következő JSON-fájlhoz hasonlóan kell kinéznie:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-app-application-id>",
"ClientSecret": "<web-app-application-secret>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
"TodoList": {
"TodoListScope": "https://contoso.onmicrosoft.com/api/demo.read",
"TodoListBaseAddress": "https://localhost:44332"
}
}
6. lépés: A minta webalkalmazás futtatása
- Hozza létre és futtassa a projektet.
- Nyissa meg a következő címet:
https://localhost:5000
. - Fejezze be a regisztrációs vagy bejelentkezési folyamatot.
A sikeres hitelesítés után megjelenik a megjelenítendő név a navigációs sávon. Az Azure AD B2C-jogkivonat által az alkalmazáshoz visszaküldött jogcímek megtekintéséhez válassza a TodoList lehetőséget.
Az alkalmazás üzembe helyezése
Éles alkalmazásokban az alkalmazásregisztrációs átirányítási URI általában egy nyilvánosan elérhető végpont, ahol az alkalmazás fut, például https://contoso.com/signin-oidc
.
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.
Jogkivonat-gyorsítótár webalkalmazáshoz
A webalkalmazás-minta memórián belüli tokengyorsítótár-szerializálást használ. Ez a megvalósítás kiváló a mintákban. Éles alkalmazásokban is jó, feltéve, hogy nem bánja, ha a jogkivonat-gyorsítótár elveszik a webalkalmazás újraindításakor.
Éles környezetben ajánlott elosztott memória-gyorsítótárat használni. Például Redis Cache, NCache vagy SQL Server-gyorsítótár. Az elosztott memóriagyorsítótár-implementációkkal kapcsolatos részletekért lásd a tokengyorsítótár szerializálását.
További lépések
- További információ a kódmintáról.
- Megtudhatja, hogyan engedélyezheti a hitelesítést a saját webalkalmazásában az Azure AD B2C használatával.
- Megtudhatja, hogyan engedélyezheti a hitelesítést a saját webes API-jában.