Testování chráněného rozhraní API
Tento kurz je součástí série, která vám pomůže sestavit a otestovat chráněné webové rozhraní API zaregistrované v id Microsoft Entra pro tenanta zákazníka.
V tomto kurzu se naučíte:
- Testování chráněného webového rozhraní API pomocí jednoduché aplikace démona, která volá webové rozhraní API
Požadavky
Než se pustíte do tohoto článku, ujistěte se, že máte chráněné webové rozhraní API , které můžete použít pro účely testování.
Registrace aplikace démona
Následující postup ukazuje, jak zaregistrovat aplikaci démona v Centru pro správu Microsoft Entra:
Přihlaste se k centru pro správu Microsoft Entra jako aspoň vývojář aplikací.
Pokud máte přístup k více tenantům, přepněte na tenanta zákazníka pomocí filtru Adresáře a předplatná v horní nabídce.
Přejděte naAplikace>identit>Registrace aplikací.
Vyberte + Nová registrace.
Na stránce Zaregistrovat aplikaci , která se zobrazí, zadejte informace o registraci 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 Účty pouze 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 mají 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 Tajné kódy certifikátů&.
- Vyberte Nový tajný klíč klienta.
- Do pole Popis zadejte popis tajného klíče klienta (například ciam app secret).
- 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 ke konfiguraci v pozdějším kroku.
Poznámka
Hodnota tajného kódu se po přechodu ze stránky Certifikáty a tajné kódy znovu nezobrazí a není možné ji žádným způsobem načíst, proto ji nezapomeňte zaznamenat.
Kvůli rozšířenému zabezpečení zvažte použití certifikátů místo tajných klíčů klientů.
Přiřazení aplikační role k aplikaci démona
Aplikace, které se samy ověřují, 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 kartu Moje rozhraní API .
V seznamu rozhraní API vyberte rozhraní API, například ciam-ToDoList-api.
Vyberte možnost Oprávnění aplikace . Tuto možnost vybereme, protože se aplikace přihlašuje jako sama, ne jako uživatelé.
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 oprávnění přiřadili správně. 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 samotní 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> tenanta a pak vyberte Ano.
- Vyberte Aktualizovat a pak ověřte, že se u obou oprávnění v části Stav zobrazí udělené pro <název> vašeho tenanta.
Psaní kódu
Inicializace konzolové aplikace .NET a přechod do její 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ěď: V konzole je vytištěno neautorizováno .Odeberte kód v kroku 4 a nahraďte následujícím kódem, který otestuje 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: Vaše odpověď: OK vytištěné v konzole.