Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op: 
 Werknemerstenants 
 Externe tenants (meer informatie)
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 Microsoft Entra-tenant. In deel 1 van deze reekshebt u een ASP.NET Core-web-API gemaakt en de eindpunten ervan beveiligd. U gaat nu een lichtgewicht daemon-app maken, deze registreren in uw tenant en de daemon-app gebruiken om de web-API te testen die u hebt gemaakt.
In deze handleiding leert u:
- Een daemon-app registreren
 - Een app-rol toewijzen aan uw daemon-app
 - Uw daemon-app bouwen
 - Uw daemon-app uitvoeren om de beveiligde web-API aan te roepen
 
Vereiste voorwaarden
- Als u dat nog niet hebt gedaan, voltooit u de zelfstudie: een ASP.NET Core-web-API bouwen en beveiligen met het Microsoft Identity Platform
 
De daemon-app registreren
De volgende stappen laten zien 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 pictogram Instellingen
 in het bovenste menu om naar uw externe tenant over te schakelen vanuit het menu Mappen en abonnementen.Blader naar Entra ID>App-registraties.
Selecteer + Nieuwe registratie.
In de pagina Registratie van een toepassing die verschijnt, voert u de registratiegegevens van uw toepassing in.
Voer in de sectie Naam een beschrijvende toepassingsnaam in die wordt weergegeven aan 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 directory-id (tenant) en de applicatie-id (client) die moet worden gebruikt in de broncode van uw toepassing.
Maak 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 webapp client secret) om de pagina Overzicht te openen.
 - Selecteer onder BeherenCertificaten & geheimen>Clientgeheimen>Nieuw clientgeheim.
 - Voer in het vak Beschrijving een beschrijving in voor het clientgeheim (bijvoorbeeld clientgeheim van de web-app).
 - Selecteer onder Verlopen 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. 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.
 
Een app-rol toewijzen aan uw daemon-app
Toepassingen die zichzelf verifiëren zonder dat een gebruiker app-machtigingen nodig heeft (ook wel rollen genoemd). Met deze machtigingen heeft de app zelf rechtstreeks toegang tot resources. Aan de andere kant, als we de API testen met een aangemelde gebruiker, zouden we gedelegeerde machtigingen (bereiken) toewijzen. Met gedelegeerde machtigingen kan de app namens de gebruiker handelen, beperkt tot de toegangsrechten van de gebruiker. Volg deze stappen om toepassingsmachtigingen toe te wijzen aan de daemon-app:
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 de API's die door mijn organisatie worden gebruikt .
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, maar niet namens een gebruiker.
Uit de lijst met machtigingen selecteer je 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 Verleen beheerderstoestemming voor <uw tenantnaam>, selecteer vervolgens Ja.
 - Selecteer Vernieuwen en controleer vervolgens of Verleend voor <uw tenantnaam> wordt weergegeven onder Status voor beide machtigingen.
 
Een daemon-app bouwen
Initialiseer een .NET-console-app en navigeer naar de hoofdmap:
dotnet new console -o MyTestApp cd MyTestAppInstalleer MSAL.NET om te helpen bij het afhandelen van verificatie door de volgende opdracht uit te voeren:
dotnet add package Microsoft.Identity.ClientVoer uw API-project uit en noteer de poort waarop het wordt uitgevoerd.
Open het Program.cs-bestand 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("http://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: Ongeautoriseerd in uw console weergegeven.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. Deze daemon-app maakt gebruik van de clientcredentialsflow om een toegangstoken te verkrijgen, waarbij het zichzelf authenticeert zonder tussenkomst van de gebruiker.
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 tenantId = "<your-tenant-id>"; //Use in workforce tenant configuration var tenantName = "<your-tenant-name>"; //Use in external tenant configuration var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration 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>/api/todolist"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine("Your response is: " + response.StatusCode); Console.WriteLine(content);Vervang de tijdelijke aanduidingen in de code door de client-id van uw daemon-app, geheime sleutel, web-API-applicatie-ID en tenantnaam.
- Gebruik voor externe huurders de autoriteit in de vorm: 
"https://{tenantName}.ciamlogin.com/" - Voor werkgevershuurders maakt u gebruik van de bevoegdheid in de vorm: 
"https://login.microsoftonline.com/{tenantId}" 
- Gebruik voor externe huurders de autoriteit in de vorm: 
 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.