Megosztás a következőn keresztül:


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:

  1. A felhasználók megnyitják a webalkalmazást, és kiválasztják a Bejelentkezés lehetőséget.

  2. Az alkalmazás hitelesítési kérelmet kezdeményez, és átirányítja a felhasználókat az Azure AD B2C-be.

  3. 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.

  4. Miután a felhasználók bejelentkeznek, az Azure AD B2C egy engedélyezési kódot ad vissza az alkalmazásnak.

  5. 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:

Diagram of a web app with web API call registrations and tokens.

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:

  1. Az alkalmazásból a felhasználók kijelentkeznek.
  2. Az alkalmazás törli a munkamenet-objektumokat, a hitelesítési tár pedig törli a jogkivonat-gyorsítótárát.
  3. 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.
  4. 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:

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:

  1. Jelentkezzen be az Azure Portalra.

  2. 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.

  3. 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.

  4. Az Azure Portalon keresse meg és válassza ki az Azure AD B2C-t.

  5. Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.

  6. 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.

  7. Válassza ki a pénztárgépet.

  8. Az alkalmazásregisztráció befejezése után válassza az Áttekintés lehetőséget.

  9. Jegyezze fel az alkalmazás (ügyfél) azonosítóját a webalkalmazás konfigurálásakor későbbi használatra.

    Screenshot that demonstrates how to get a web A P I application I D.

2.2. lépés: Web API-alkalmazások hatóköreinek konfigurálása

  1. Válassza ki a létrehozott my-api1 alkalmazást (alkalmazásazonosító: 2) az Áttekintés lap megnyitásához.

  2. A Kezelés területen válassza az API-k felfedése lehetőséget.

  3. 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.

  4. Az API által definiált hatókörök alatt válassza a Hatókör hozzáadása lehetőséget.

  5. Az API olvasási hozzáférését meghatározó hatókör létrehozása:

    1. A hatókör neveként adja meg a tasks.read nevet.
    2. Ha Rendszergazda hozzájárulás megjelenítendő nevét, írja be a Feladatok API olvasási hozzáférését.
    3. 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.
  6. Válassza a Hatókör hozzáadása lehetőséget.

  7. 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:

    1. A Hatókör neve mezőbe írja be a tasks.write nevet.
    2. Ha Rendszergazda hozzájárulás megjelenítendő nevét szeretné megadni, írja be a Feladatok API írási hozzáférését.
    3. A Rendszergazda hozzájárulás leírásához írja be a Tevékenység API írási hozzáférését.
  8. 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:

  1. Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.

  2. A Név területen adja meg az alkalmazás nevét (például webapp1).

  3. 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).

  4. Az Átirányítási URI területen válassza a Web lehetőséget, majd írja be https://localhost:5000/signin-oidcaz URL-címet az URL-mezőbe.

  5. 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.

  6. Válassza ki a pénztárgépet.

  7. Az alkalmazásregisztráció befejezése után válassza az Áttekintés lehetőséget.

  8. A webalkalmazás konfigurálásakor jegyezze fel az alkalmazás (ügyfél) azonosítóját későbbi használatra.

    Screenshot of the web app Overview page for recording your web application ID.

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.

  1. A Kezelés területen válassza a Tanúsítványok és titkos kódok lehetőséget.
  2. Válassza az Új titkos ügyfélkód lehetőséget.
  3. A Leírás mezőbe írja be az ügyfél titkos kódjának leírását (például clientsecret1).
  4. 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.
  5. 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:

  1. Válassza Alkalmazásregisztrációk, majd válassza ki a létrehozott alkalmazást (alkalmazásazonosító: 1).

  2. A Kezelés területen válassza ki az API-engedélyeket.

  3. A Konfigurált engedélyek csoportban válassza az Engedély hozzáadása lehetőséget.

  4. Válassza a Saját API-k lapot.

  5. 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.

  6. 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).

  7. Jelölje be az Engedélyek hozzáadása lehetőséget.

  8. Válassza a bérlő nevének> rendszergazdai <hozzájárulásának megadása lehetőséget.

  9. Válassza az Igen lehetőséget.

  10. 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 .

  11. 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.

    Screenshot of the configured permissions pane, showing that read access permissions are granted.

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:

  1. Ha ezt kéri, állítsa vissza a függőségeket.
  2. Hozza létre és futtassa a projektet.
  3. 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

  1. Hozza létre és futtassa a projektet.
  2. Nyissa meg a következő címet: https://localhost:5000.
  3. 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.

Screenshot of the web app token claims.

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 httpskell 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