Rövid útmutató: A ASP.NET Core webes API védelme a Microsoft Identitásplatform

Ez a rövid útmutató egy ASP.NET Core webes API-kódmintával mutatja be, hogyan korlátozhatja az erőforrások hozzáférését a jogosult fiókokhoz. A minta ASP.NET Core Identity-t használ, amely a Microsoft Authentication Library (MSAL) használatával kezeli a hitelesítést.

Előfeltételek

Az alkalmazás és a rekordazonosítók regisztrálása

Tipp.

A cikkben szereplő lépések a portáltól függően kissé eltérhetnek.

A regisztráció befejezéséhez adjon meg egy nevet az alkalmazásnak, és adja meg a támogatott fióktípusokat. A regisztrációt követően az alkalmazás áttekintési oldala megjeleníti az alkalmazás forráskódjában szükséges azonosítókat.

  1. Jelentkezzen be a Microsoft Entra felügyeleti központba legalább alkalmazásfejlesztőként.

  2. Ha több bérlőhöz is hozzáfér, a felső menü Gépház ikonjávalválthat arra a bérlőre, amelyben regisztrálni szeretné az alkalmazást a Könyvtárak + előfizetések menüből.

  3. Keresse meg az identitásalkalmazásokat>> Alkalmazásregisztrációk.

  4. Új regisztráció kiválasztása.

  5. Adja meg az alkalmazás nevét, például a NewWebAPI1 nevet.

  6. Támogatott fióktípusok esetén csak ebben a szervezeti címtárban válassza a Fiókok lehetőséget. A különböző fióktípusokra vonatkozó információkért válassza a Súgó kiválasztása lehetőséget.

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

    Képernyőkép a név megadásáról és a fiók típusának kiválasztásáról.

  8. A regisztráció befejezésekor megjelenik az alkalmazás Áttekintés panelje. Jegyezze fel a címtár (bérlő) azonosítóját és az alkalmazás forráskódjában használandó alkalmazás-(ügyfél-) azonosítót .

    Képernyőkép az áttekintési oldalon található azonosítóértékekről.

Feljegyzés

A támogatott fióktípusok módosíthatók az alkalmazás által támogatott fiókok módosításával.

API közzététele

Az API regisztrálása után konfigurálhatja annak engedélyét az API által az ügyfélalkalmazások számára elérhetővé tott hatókörök meghatározásával. Az ügyfélalkalmazások engedélyt kérnek a műveletek végrehajtására azáltal, hogy átadnak egy hozzáférési jogkivonatot a kérésekkel együtt a védett webes API-nak. A webes API ezután csak akkor hajtja végre a kért műveletet, ha a kapott hozzáférési jogkivonat tartalmazza a szükséges hatóköröket.

  1. A Kezelés területen válassza az API-k> hatókör hozzáadása lehetőséget. Fogadja el a javasolt alkalmazásazonosító URI-ját(api://{clientId}) a Mentés és folytatás lehetőség kiválasztásával. Ez {clientId} az Áttekintés lapról rögzített érték. Ezután adja meg a következő adatokat:

    1. A Hatókör neve mezőbe írja be a következőt Forecast.Read:
    2. A Ki tud hozzájárulni, győződjön meg arról, hogy a Rendszergazda és a felhasználók lehetőség van kiválasztva.
    3. A Rendszergazda hozzájárulás megjelenítendő neve mezőbe írja be a következőtRead forecast data:
    4. A Rendszergazda hozzájárulás leírási mezőjébe írja be a következőtAllows the application to read weather forecast data:
    5. A Felhasználói hozzájárulás megjelenítendő név mezőjébe írja be a következőtRead forecast data:
    6. A Felhasználói hozzájárulás leírás mezőjébe írja be a következőtAllows the application to read weather forecast data:
    7. Győződjön meg arról, hogy az állapot engedélyezve van.
  2. Válassza a Hatókör hozzáadása lehetőséget. Ha a hatókör helyesen lett megadva, az API-t közzétenő panelen jelenik meg.

    Képernyőkép a mezőértékekről, amikor hozzáadja a hatókört egy API-hoz.

A mintaalkalmazás klónozása vagy letöltése

A mintaalkalmazás beszerzéséhez klónozhatja a GitHubról, vagy letöltheti .zip fájlként.

  • A minta klónozásához nyisson meg egy parancssort, és keresse meg a projektet, és írja be a következő parancsot:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  • Töltse le a .zip fájlt. Bontsa ki egy fájl elérési útjára, ahol a név hossza kevesebb, mint 260 karakter.

A ASP.NET Core mintaalkalmazás konfigurálása

  1. Az IDE-ben nyissa meg a mintát tartalmazó ms-identity-docs-code-dotnet/web-api projektmappát.

  2. Nyissa meg appsettings.json a fájlt, amely a következő kódrészletet tartalmazza:

    {
      "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center",
        "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center",
        "Scopes": "Forecast.Read"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    

    Keresse meg a következőket key:

    • ClientId - Az alkalmazás azonosítója, más néven az ügyfél. Cserélje le az value idézőjelek szövegét a regisztrált alkalmazás Áttekintés lapján korábban rögzített alkalmazás-(ügyfél-) azonosítóra.
    • TenantId - Annak a bérlőnek az azonosítója, ahol az alkalmazás regisztrálva van. Cserélje le az value idézőjelek szövegét a címtár (bérlő) azonosítójának korábban rögzített értékére a regisztrált alkalmazás Áttekintés lapján.

A mintaalkalmazás futtatása

  1. Az alkalmazás elindításához hajtsa végre a következő parancsot:

    dotnet run
    
  2. Megjelenik egy kimenet, mint a következő minta:

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

    Jegyezze fel a portszámot az https://localhost:{port} URL-címben.

  3. A végpont védelmének ellenőrzéséhez használja a következő cURL-parancsot a Bashben egy hitelesítés nélküli HTTP GET-kérés küldéséhez a Bashben:

    curl -X GET https://localhost:5001/weatherforecast -ki
    

    A várt válasz 401 Nem engedélyezett a következőhöz hasonló kimenettel:

    user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki
    HTTP/2 401
    date: Fri, 23 Sep 2023 23:34:24 GMT
    server: Kestrel
    www-authenticate: Bearer
    content-length: 0