Uw beveiligde API testen
Deze zelfstudie maakt deel uit van een reeks waarmee u een beveiligde web-API kunt bouwen en testen die is geregistreerd in een Microsoft Entra-id voor de tenant van klanten.
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
Voordat u dit artikel doorloopt, moet u ervoor zorgen dat u een beveiligde web-API hebt om te gebruiken voor testdoeleinden.
De daemon-app registreren
In de volgende stappen ziet u hoe u uw daemon-app registreert in het Microsoft Entra-beheercentrum:
Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een toepassingsontwikkelaar.
Als u toegang hebt tot meerdere tenants, gebruikt u het filter Mappen en abonnementen in het bovenste menu om over te schakelen naar de tenant van uw klant.
Blader naar Identiteitstoepassingen>>App-registraties.
Selecteer + Nieuwe registratie.
Voer op de pagina Een toepassing registreren die wordt weergegeven de registratiegegevens van uw toepassing in:
Voer in de sectie Naam een betekenisvolle toepassingsnaam in die wordt weergegeven voor gebruikers van de app, bijvoorbeeld ciam-client-app.
Onder Ondersteunde accounttypen selecteert u Enkel accounts in deze organisatieadreslijst.
Selecteer Registreren.
Het deelvenster Overzicht van de toepassing wordt weergegeven wanneer de registratie is voltooid. Noteer de map-id (tenant) en de toepassings-id (client) die moeten 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.
- Selecteer op de pagina App-registraties de toepassing die u hebt gemaakt (zoals ciam-client-app) om de pagina Overzicht te openen.
- Selecteer onder Beheren de optie Certificaten en geheimen.
- Selecteer Nieuw clientgeheim.
- Voer in het vak Beschrijving een beschrijving in voor het clientgeheim (bijvoorbeeld ciam app clientgeheim).
- Selecteer onder Verloopt een duur waarvoor het geheim geldig is (volgens de beveiligingsregels van uw organisatie) en selecteer vervolgens Toevoegen.
- Noteer de Waarde van het geheim. U gebruikt deze waarde voor configuratie in een latere stap.
Notitie
De geheime waarde wordt niet meer weergegeven en kan op geen enkele manier worden opgehaald nadat u de pagina Certificaten en geheimen hebt verwijderd. Zorg er dus voor dat u deze opneemt.
Voor verbeterde beveiliging kunt u overwegen certificaten te gebruiken in plaats van clientgeheimen.
App-rol toewijzen aan uw daemon-app
Voor apps die zelf worden geverifieerd, zijn app-machtigingen vereist.
Selecteer op de pagina App-registraties de toepassing die u hebt gemaakt, zoals ciam-client-app.
Selecteer onder Beheren de optie API-machtigingen.
Selecteer onder Geconfigureerde machtigingen de optie Een machtiging toevoegen.
Selecteer het tabblad Mijn API's.
Selecteer in de lijst met API's de API, zoals ciam-ToDoList-api.
Selecteer de optie Toepassingsmachtigingen . We selecteren deze optie als de app zich aanmeldt als zichzelf, niet als gebruikers.
Selecteer in de lijst met machtigingen TodoList.Read.All, ToDoList.ReadWrite.All (gebruik indien nodig het zoekvak).
Selecteer de knop Toestemmingen toevoegen.
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:
- Selecteer Beheerderstoestemming verlenen voor <uw tenantnaam> en selecteer vervolgens Ja.
- Selecteer Vernieuwen en controleer vervolgens of Verleend voor <uw tenantnaam> wordt weergegeven onder Status voor beide machtigingen.
Code schrijven
Een .NET-console-app initialiseren en naar de hoofdmap navigeren
dotnet new console -o MyTestApp cd MyTestApp
Installeer MSAL om u te helpen bij het afhandelen van verificatie door de volgende opdracht uit te voeren:
dotnet add package Microsoft.Identity.Client
Voer uw API-project uit en noteer de poort waarop het wordt uitgevoerd.
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. Als het goed is, ziet u de tekenreeks: Uw antwoord is: Niet gemachtigd afgedrukt in uw console.Verwijder de code in stap 4 en vervang door het volgende om uw API te testen door een aanvraag met een geldig toegangstoken te verzenden.
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 nu de tekenreeks: Uw antwoord is: OK afgedrukt in uw console.