Rychlý start: Ochrana webového rozhraní API ASP.NET Core pomocí platformy Microsoft Identity Platform

V tomto rychlém startu se používá ukázka kódu webového rozhraní API ASP.NET Core, která ukazuje, jak omezit přístup k prostředkům na autorizované účty. Ukázka používá k zpracování ověřování ASP.NET základní identitu, která komunikuje s knihovnou MSAL (Microsoft Authentication Library).

Požadavky

Registrace identifikátorů aplikace a záznamů

Tip

Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.

K dokončení registrace zadejte název aplikace a zadejte podporované typy účtů. Po registraci se na stránce Přehled aplikace zobrazí identifikátory potřebné ve zdrojovém kódu aplikace.

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.

  2. Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.

  3. Přejděte k aplikacím> identit>Registrace aplikací.

  4. Vyberte Nová registrace.

  5. Zadejte název aplikace, například NewWebAPI1.

  6. U podporovaných typů účtů vyberte Pouze účty v tomto organizačním adresáři. Pokud chcete získat informace o různých typech účtů, vyberte možnost Pomoc s výběrem možnosti.

  7. Vyberte Zaregistrovat.

    Snímek obrazovky znázorňující, jak zadat název a vybrat typ účtu

  8. Po dokončení registrace se zobrazí podokno Přehled aplikace. Poznamenejte si ID adresáře (tenanta) a ID aplikace (klienta), které se má použít ve zdrojovém kódu aplikace.

    Snímek obrazovky znázorňující hodnoty identifikátoru na stránce přehledu

Poznámka:

Podporované typy účtů je možné změnit odkazem na úpravu účtů podporovaných aplikací.

Zpřístupnit rozhraní API

Po registraci rozhraní API můžete nakonfigurovat jeho oprávnění definováním oborů, které rozhraní API zveřejňuje klientským aplikacím. Klientské aplikace požadují oprávnění k provádění operací předáním přístupového tokenu spolu s požadavky na chráněné webové rozhraní API. Webové rozhraní API pak provede požadovanou operaci pouze v případě, že přístupový token, který obdrží, obsahuje požadované obory.

  1. V části Spravovat vyberte Zveřejnit rozhraní API > Přidat obor. Výběrem možnosti Uložit a pokračovat přijměte navrhovaný identifikátor URI(api://{clientId}) ID aplikace. Jedná se {clientId} o hodnotu zaznamenanou ze stránky Přehled . Pak zadejte následující informace:

    1. Jako název oboru zadejte Forecast.Read.
    2. U Kdo může souhlasit, ujistěte se, že je vybraná možnost Správa a uživatelé.
    3. Do pole zobrazovaného názvu souhlasu Správa zadejte Read forecast data.
    4. Do pole Správa popis souhlasu zadejte Allows the application to read weather forecast data.
    5. Do pole Zobrazované jméno souhlasu uživatele zadejte Read forecast data.
    6. Do pole Popis souhlasu uživatele zadejte Allows the application to read weather forecast data.
    7. Ujistěte se, že je stav nastavený na Povoleno.
  2. Vyberte Přidat rozsah. Pokud byl obor zadán správně, je uvedený v podokně Zveřejnit rozhraní API .

    Snímek obrazovky znázorňující hodnoty polí při přidávání oboru do rozhraní API

Klonování nebo stažení ukázkové aplikace

Pokud chcete získat ukázkovou aplikaci, můžete ji buď naklonovat z GitHubu, nebo si ji stáhnout jako soubor .zip .

  • Pokud chcete ukázku naklonovat, otevřete příkazový řádek a přejděte do umístění, kam chcete projekt vytvořit, a zadejte následující příkaz:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  • Stáhněte soubor .zip. Extrahujte ho do cesty k souboru, kde délka názvu je menší než 260 znaků.

Konfigurace ukázkové aplikace ASP.NET Core

  1. V integrovaném vývojovém prostředí otevřete složku projektu ms-identity-docs-code-dotnet/web-api obsahující ukázku.

  2. Otevřete appsettings.json soubor, který obsahuje následující fragment kódu:

    {
      "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": "*"
    }
    

    Vyhledejte následující key:

    • ClientId – Identifikátor aplikace, označovaný také jako klient. value Nahraďte text v uvozovkách ID aplikace (klienta), které bylo zaznamenáno dříve ze stránky Přehled registrované aplikace.
    • TenantId – Identifikátor tenanta, ve kterém je aplikace zaregistrovaná. value Nahraďte text v uvozovkách hodnotou ID adresáře (tenanta), která byla zaznamenána dříve ze stránky Přehled registrované aplikace.

Spuštění ukázkové aplikace

  1. Spuštěním následujícího příkazu spusťte aplikaci:

    dotnet run
    
  2. Zobrazí se výstup podobný následujícímu příkladu:

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

    Poznamenejte si číslo portu v https://localhost:{port} adrese URL.

  3. Pokud chcete ověřit, že je koncový bod chráněný, pomocí následujícího příkazu cURL v Bash odešlete neověřený požadavek HTTP GET v Bash:

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

    Očekávaná odpověď je 401 Neautorizováno s výstupem podobným:

    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