Share via


Uw beveiligde API testen

Deze zelfstudie is het laatste deel van een reeks die laat zien hoe u een beveiligde web-API bouwt en test die is geregistreerd in een externe tenant. In deel 1 van deze reeks hebt u een ASP.NET Core-web-API gemaakt en de eindpunten ervan beveiligd. In deze laatste stap registreert u de daemon-app en test u uw API.

In deze zelfstudie leert u het volgende:

  • Een beveiligde web-API testen met behulp van een lichtgewicht daemon-app die de web-API aanroept

Vereisten

Zelfstudie: Een ASP.NET Core-web-API beveiligen die is geregistreerd in een externe tenant

De daemon-app registreren

De volgende stappen laten zien hoe u uw daemon-app registreert in het Microsoft Entra-beheercentrum:

  1. Meld u als toepassingsontwikkelaar aan bij het Microsoft Entra-beheercentrum.

  2. Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingenin het bovenste menu om over te schakelen naar uw externe tenant vanuit het menu Mappen en abonnementen.

  3. Blader naar identiteitstoepassingen>> App-registraties.

  4. Selecteer + Nieuwe registratie.

  5. Voer op de pagina Een toepassing registreren die wordt weergegeven de registratiegegevens van uw toepassing in:

    1. Voer in de sectie Naam een beschrijvende toepassingsnaam in die wordt weergegeven aan gebruikers van de app, bijvoorbeeld ciam-client-app.

    2. Onder Ondersteunde accounttypen selecteert u Enkel accounts in deze organisatieadreslijst.

  6. Selecteer Registreren.

  7. Het deelvenster Overzicht van de toepassing wordt weergegeven wanneer de registratie is voltooid. Noteer de map-id (tenant) en de toepassings-id (client) die moet worden gebruikt in de broncode van uw toepassing.

Maak vervolgens een clientgeheim voor de geregistreerde toepassing. De toepassing gebruikt het clientgeheim om de identiteit te bewijzen wanneer er tokens worden aangevraagd.

  1. Selecteer op de pagina App-registraties de toepassing die u hebt gemaakt (zoals ciam-client-app) om de overzichtspagina te openen.
  2. Selecteer onder Beheren de optie Certificaten en geheimen.
  3. Selecteer Nieuw clientgeheim.
  4. Voer in het vak Beschrijving een beschrijving in voor het clientgeheim (bijvoorbeeld ciam-app-clientgeheim).
  5. Selecteer onder Verlopen een duur waarvoor het geheim geldig is (volgens de beveiligingsregels van uw organisatie) en selecteer vervolgens Toevoegen.
  6. Noteer de Waarde van het geheim. U gebruikt deze waarde voor configuratie in een latere stap. De geheime waarde wordt niet opnieuw weergegeven en kan op geen enkele manier worden opgehaald nadat u weg navigeert van de certificaten en geheimen. Zorg ervoor dat u deze opneemt.

App-rol toewijzen aan uw daemon-app

Voor apps die zichzelf verifiëren, zijn app-machtigingen vereist.

  1. Selecteer op de pagina App-registraties de toepassing die u hebt gemaakt, zoals ciam-client-app.

  2. Selecteer onder Beheren de optie API-machtigingen.

  3. Selecteer onder Geconfigureerde machtigingen de optie Een machtiging toevoegen.

  4. Selecteer de API's die door mijn organisatie worden gebruikt .

  5. Selecteer in de lijst met API's de API, zoals ciam-ToDoList-api.

  6. Selecteer de optie Toepassingsmachtigingen . We selecteren deze optie als de app zich aanmeldt als zichzelf, niet voor gebruikers.

  7. Selecteer In de lijst met machtigingen todoList.Read.All, ToDoList.ReadWrite.All (gebruik indien nodig het zoekvak).

  8. Selecteer de knop Toestemmingen toevoegen.

  9. Op dit moment hebt u de machtigingen correct toegewezen. Omdat de daemon-app echter niet toestaat dat gebruikers ermee werken, kunnen de gebruikers zelf geen toestemming geven voor deze machtigingen. Om dit probleem op te lossen, moet u als beheerder toestemming geven voor deze machtigingen namens alle gebruikers in de tenant:

    1. Selecteer Beheerderstoestemming verlenen voor <uw tenantnaam> en selecteer Vervolgens Ja.
    2. Selecteer Vernieuwen en controleer vervolgens of Verleend voor <uw tenantnaam> wordt weergegeven onder Status voor beide machtigingen.

Code schrijven

  1. Initialiseer een .NET-console-app en navigeer naar de hoofdmap

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Installeer MSAL om u te helpen bij het afhandelen van verificatie door de volgende opdracht uit te voeren:

    dotnet add package Microsoft.Identity.Client
    
  3. Voer uw API-project uit en noteer de poort waarop het wordt uitgevoerd.

  4. Open het bestand Program.cs en vervang de code 'Hallo wereld' door de volgende code.

    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);
    

    Navigeer naar de hoofdmap van de daemon-app en voer de app uit met behulp van de opdracht dotnet run. Met deze code wordt een aanvraag zonder toegangstoken verzonden. U ziet de tekenreeks: Uw antwoord is: Niet geautoriseerd afgedrukt in uw console.

  5. Verwijder de code in stap 4 en vervang door het volgende om uw API te testen door een aanvraag te verzenden met een geldig toegangstoken.

    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);
    

    Navigeer naar de hoofdmap van de daemon-app en voer de app uit met behulp van de opdracht dotnet run. Met deze code wordt een aanvraag met een geldig toegangstoken verzonden. U ziet de tekenreeks: Uw antwoord is: OK afgedrukt in uw console.

Zie ook

Selfservice voor wachtwoordherstel inschakelen