Sdílet prostřednictvím


Testování chráněného webového rozhraní API ASP.NET Core

platí pro: zelený kruh s bílým zaškrtnutím.pracovnícizelený kruh s bílým zaškrtnutím. externí nájemníci (další informace).

Tento kurz je poslední částí série, která demonstruje vytváření a testování chráněného webového rozhraní API zaregistrovaného v tenantovi Microsoft Entra. V části 1 této sériejste vytvořili webové rozhraní API ASP.NET Core a chránili jeho koncové body. Teď vytvoříte jednoduchou aplikaci démona, zaregistrujete ji ve svém tenantovi a použijete aplikaci démona k otestování webového rozhraní API, které jste vytvořili.

V tomto kurzu se naučíte:

  • Registrace aplikace démona
  • Přiřadit roli aplikace vašemu daemonu
  • Vytvoření aplikace démona
  • Spusťte svou daemon aplikaci k volání chráněného webového rozhraní API

Požadavky

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 alespoň jako vývojáře 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 na Identity>Applications>App registrations.

  4. Vyberte + Nová registrace.

  5. Na stránce Zaregistrovat stránku 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 proběhnutí registrace se zobrazí podokno Přehled aplikace. Poznamenejte ID adresáře (tenanta) a ID aplikace (klient), 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 žádostech o tokeny:

  1. Na stránce Registrace aplikací vyberte aplikaci, kterou jste vytvořili (například klíč klienta webové aplikace), a otevřete tak její stránku Přehled.
  2. V části Spravovatvyberte Certifikáty & tajných kódů>Tajné kódy klienta>Nový tajný klíč klienta.
  3. Do pole Popis zadejte popis tajného klíče klienta (například tajný kód klienta webové aplikace).
  4. V části Konec platnostivyberte dobu, po kterou je tajemství platné (podle pravidel zabezpečení vaší organizace), a pak vyberte Přidat.
  5. Zaznamenejte hodnotu tajemství . Tuto hodnotu použijete pro konfiguraci v pozdějším kroku. Hodnota tajného kódu se znovu nezobrazí a není možné ji žádným způsobem načíst, když přejdete mimo Certifikáty a tajné kódy. Ujistěte se, že jste ho nahráli.

Přiřaďte aplikační roli vaší démonické aplikaci

Aplikace, které se ověřují sami, vyžadují oprávnění aplikace.

  1. Na stránce Registrace aplikací vyberte aplikaci démona, kterou jste vytvořili.

  2. V části Spravovatvyberte oprávnění rozhraní API.

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

  4. Vyberte kartu rozhraní API , která moje organizace používá.

  5. V seznamu rozhraní API vyberte webové rozhraní API, které jste zaregistrovali dříve.

  6. Vyberte možnost Oprávnění aplikace. Tuto možnost vybereme, protože aplikace se přihlašuje sama za sebe, ale ne jménem uživatele.

  7. V seznamu oprávnění vyberte Forecast.Read (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 sami uživatelé s těmito oprávněními souhlasit. 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 Aktualizovata ověřte, že uděleno pro <název vašeho tenanta,> se zobrazí v části Stav oprávnění.

Vytvořit aplikaci démona

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

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Nainstalujte MSAL.NET, 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("http://localhost:<your-api-port>/weatherforecast");
    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. Tato démonická aplikace používá tok přihlašovacích údajů klienta k získání přístupového tokenu při ověřování bez zásahu uživatele.

    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(new string[] { scopes }).ExecuteAsync();
    Console.WriteLine($"Access Token: {result.AccessToken}");
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("http://localhost:/<your-api-port>/weatherforecast");
    var content = await response.Content.ReadAsStringAsync();
    
    Console.WriteLine("Your response is: " + response.StatusCode);
    Console.WriteLine(content);
    

    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ěď je: OK vytištěno v konzole spolu s některými fiktivními daty předpovědi počasí z našeho minimálního rozhraní API.

    Your response is: OK
    [{"date":"2025-03-01","temperatureC":45,"summary":"Warm","temperatureF":112},
    {"date":"2025-03-02","temperatureC":7,"summary":"Freezing","temperatureF":44},
    {"date":"2025-03-03","temperatureC":48,"summary":"Sweltering","temperatureF":118},
    {"date":"2025-03-04","temperatureC":-20,"summary":"Chilly","temperatureF":-3},
    {"date":"2025-03-05","temperatureC":12,"summary":"Scorching","temperatureF":53}]