Testování chráněného rozhraní API
Tento kurz je poslední částí série, která ukazuje sestavení a testování chráněného webového rozhraní API registrovaného v externím tenantovi. V první části této série jste vytvořili webové rozhraní API ASP.NET Core a chránili jeho koncové body. V tomto posledním kroku zaregistrujete aplikaci démona a otestujete své rozhraní API.
V tomto kurzu se naučíte:
- Testování chráněného webového rozhraní API pomocí odlehčené aplikace démona, která volá webové rozhraní API
Požadavky
Kurz: Zabezpečení webového rozhraní API ASP.NET Core zaregistrovaného v externím tenantovi
Registrace aplikace démona
Následující kroky ukazují, jak zaregistrovat aplikaci démona v Centru pro správu Microsoft Entra:
Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.
Pokud máte přístup k více tenantům, pomocí ikony
Nastavení v horní nabídce přepněte do externího tenanta z nabídky Adresáře a předplatná.
Přejděte k aplikacím> identit>Registrace aplikací.
Vyberte + Nová registrace.
Na stránce Registrace aplikace, která se zobrazí, zadejte registrační informace vaší aplikace:
V části Název zadejte smysluplný název aplikace, který se zobrazí uživatelům aplikace, například ciam-client-app.
V části Podporované typy účtů vyberte Pouze účty v tomto organizačním adresáři.
Vyberte Zaregistrovat.
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.
Vytvořte tajný klíč klienta pro zaregistrovanou aplikaci. Aplikace používá tajný klíč klienta k prokázání své identity při žádosti o tokeny.
- Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například ciam-client-app), a otevřete její stránku Přehled.
- V části Spravovat vyberte Certifikáty a tajné kódy.
- Vyberte Nový tajný klíč klienta.
- Do pole Popis zadejte popis tajného klíče klienta (například tajný klíč klienta ciam).
- V části Konec platnosti vyberte dobu platnosti tajného kódu (podle pravidel zabezpečení vaší organizace) a pak vyberte Přidat.
- Poznamenejte si hodnotu tajného kódu. Tuto hodnotu použijete pro konfiguraci v pozdějším kroku. Hodnota tajného kódu se znovu nezobrazí a po přechodu z certifikátů a tajných kódů se nezobrazí žádným způsobem. Ujistěte se, že jste ho nahráli.
Přiřazení role aplikace k aplikaci démona
Aplikace, které se ověřují sami, vyžadují oprávnění aplikace.
Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili, například ciam-client-app.
V části Spravovat vyberte oprávnění rozhraní API.
V části Nakonfigurovaná oprávnění vyberte Přidat oprávnění.
Vyberte rozhraní API, která moje organizace používá, kartu.
V seznamu rozhraní API vyberte rozhraní API, jako je ciam-ToDoList-api.
Vyberte možnost Oprávnění aplikace. Tuto možnost vybereme jako aplikaci, která se přihlásí jako sama sebe, ale ne jménem uživatele.
V seznamu oprávnění vyberte TodoList.Read.All, ToDoList.ReadWrite.All (v případě potřeby použijte vyhledávací pole).
Vyberte tlačítko Přidat oprávnění.
V tomto okamžiku jste správně přiřadili oprávnění. Vzhledem k tomu, že aplikace démona neumožňuje uživatelům pracovat s ním, nemůžou s těmito oprávněními souhlasit sami uživatelé. Pokud chcete tento problém vyřešit, musíte jako správce udělit souhlas s těmito oprávněními jménem všech uživatelů v tenantovi:
- Vyberte Udělit souhlas správce pro <název> vašeho tenanta a pak vyberte Ano.
- Vyberte Aktualizovat a ověřte, že se pro <název> vašeho tenanta zobrazuje v části Stav pro obě oprávnění.
Psaní kódu
Inicializace konzolové aplikace .NET a přechod do kořenové složky
dotnet new console -o MyTestApp cd MyTestApp
Nainstalujte knihovnu MSAL, která vám pomůže se zpracováním ověřování spuštěním následujícího příkazu:
dotnet add package Microsoft.Identity.Client
Spusťte projekt rozhraní API a poznamenejte si port, na kterém běží.
Otevřete soubor Program.cs a nahraďte kód "Hello world" následujícím kódem.
using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var response = await client.GetAsync("https://localhost:<your-api-port>/api/todolist"); Console.WriteLine("Your response is: " + response.StatusCode);
Přejděte do kořenového adresáře aplikace démona a spusťte aplikaci pomocí příkazu
dotnet run
. Tento kód odešle požadavek bez přístupového tokenu. Měl by se zobrazit řetězec: Vaše odpověď je: Neautorizováno vytištěno v konzole.Odeberte kód v kroku 4 a nahraďte následujícím kódem a otestujte rozhraní API odesláním požadavku s platným přístupovým tokenem.
using Microsoft.Identity.Client; using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var clientId = "<your-daemon-app-client-id>"; var clientSecret = "<your-daemon-app-secret>"; var scopes = new[] {"api://<your-web-api-application-id>/.default"}; var tenantName= "<your-tenant-name>"; var authority = $"https://{tenantName}.ciamlogin.com/"; var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(scopes).ExecuteAsync(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("https://localhost:44351/api/todolist"); Console.WriteLine("Your response is: " + response.StatusCode);
Přejděte do kořenového adresáře aplikace démona a spusťte aplikaci pomocí příkazu
dotnet run
. Tento kód odešle požadavek s platným přístupovým tokenem. Měl by se zobrazit řetězec: Odpověď je: OK vytištěná v konzole.