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:

  1. Přihlaste se k centru pro správu Microsoft Entra jako aspoň vývojář aplikací.

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

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

  4. Vyberte + Nová registrace.

  5. Na stránce Zaregistrovat aplikaci , která se zobrazí, zadejte informace o registraci aplikace:

    1. V části Název zadejte smysluplný název aplikace, který se zobrazí uživatelům aplikace, například ciam-client-app.

    2. V části Podporované typy účtů vyberte Účty pouze v tomto organizačním adresáři.

  6. Vyberte Zaregistrovat.

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

  1. Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například ciam-client-app), a otevřete její stránku Přehled.
  2. V části Spravovat vyberte Tajné kódy certifikátů&.
  3. Vyberte Nový tajný klíč klienta.
  4. Do pole Popis zadejte popis tajného klíče klienta (například ciam app secret).
  5. V části Konec platnosti vyberte dobu platnosti tajného kódu (podle pravidel zabezpečení vaší organizace) a pak vyberte Přidat.
  6. 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.

  1. Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili, například ciam-client-app.

  2. V části Spravovat vyberte Oprávnění rozhraní API.

  3. V části Nakonfigurovaná oprávnění vyberte Přidat oprávnění.

  4. Vyberte kartu Moje rozhraní API .

  5. V seznamu rozhraní API vyberte rozhraní API, například ciam-ToDoList-api.

  6. Vyberte možnost Oprávnění aplikace . Tuto možnost vybereme, protože se aplikace přihlašuje jako sama, ne jako uživatelé.

  7. V seznamu oprávnění vyberte TodoList.Read.All, ToDoList.ReadWrite.All (v případě potřeby použijte vyhledávací pole).

  8. Vyberte tlačítko Přidat oprávnění .

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

    1. Vyberte Udělit souhlas správce pro <název> tenanta a pak vyberte Ano.
    2. 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

  1. Inicializace konzolové aplikace .NET a přechod do její kořenové složky

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. 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
    
  3. Spusťte projekt rozhraní API a poznamenejte si port, na kterém běží.

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

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