Sdílet prostřednictvím


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:

  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 do externího tenanta z nabídky Adresáře a předplatná.

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

  4. Vyberte + Nová registrace.

  5. Na stránce Registrace aplikace, která se zobrazí, zadejte registrační informace vaší 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 Pouze účty 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 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.

  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 Certifikáty a tajné kódy.
  3. Vyberte Nový tajný klíč klienta.
  4. Do pole Popis zadejte popis tajného klíče klienta (například tajný klíč klienta ciam).
  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 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.

  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 rozhraní API, která moje organizace používá, kartu.

  5. V seznamu rozhraní API vyberte rozhraní API, jako je ciam-ToDoList-api.

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

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

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

  1. Inicializace konzolové aplikace .NET a přechod do 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ěď je: Neautorizováno vytištěno v konzole.

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

Viz také

Povolení samoobslužného resetování hesla