Quickstart: Een ASP.NET web-API aanroepen die wordt beveiligd door het Microsoft Identity Platform
Welkom! Dit is waarschijnlijk niet de pagina die u verwachtte te zien. Terwijl we aan een oplossing voor dit probleem werken, kunt u met deze koppeling naar het juiste artikel gaan:
Onze excuses voor het ongemak en bedankt voor uw geduld tijdens onze inspanningen om dit probleem op te lossen.
In deze quickstart downloadt u een codevoorbeeld en voert u dit uit. Het codevoorbeeld laat zien hoe u een ASP.NET-web-API kunt beveiligen door de toegang tot bijbehorende resources te beperken tot alleen geautoriseerde accounts. Het voorbeeld ondersteunt autorisatie van persoonlijke Microsoft-accounts en -accounts in elke Microsoft Entra-organisatie.
In dit artikel wordt ook een WPF-app (Windows Presentation Foundation) gebruikt om te laten zien hoe u een toegangstoken kunt aanvragen om toegang te krijgen tot een web-API.
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Visual Studio 2017 of 2019. U kunt Visual Studio gratis downloaden.
Het voorbeeld klonen of downloaden
U kunt het voorbeeld op twee manieren ophalen:
Kloon het vanaf uw shell of opdrachtregel:
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
Tip
Om fouten te voorkomen die worden veroorzaakt door padlengtebeperkingen in Windows, raden we u aan het archief te extraheren of de opslagplaats te klonen in een map dicht bij de hoofdmap van uw station.
De web-API registreren (TodoListService)
Registreer uw web-API in App-registraties in Azure Portal.
Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een toepassings-Beheer istrator.
Blader naar identiteitstoepassingen>> App-registraties.
Selecteer Nieuwe registratie.
Voer een Naam in voor de toepassing, bijvoorbeeld
AppModelv2-NativeClient-DotNet-TodoListService
. Gebruikers van uw app kunnen de naam zien. U kunt deze later wijzigen.Bij Ondersteunde accounttypen selecteert u Accounts in een organisatieadreslijst.
Selecteer Registreren om de toepassing te maken.
Zoek de waarde Toepassings-id (client) op de app-pagina Overzicht en noteer deze voor gebruik later. U hebt deze nodig om het Visual Studio-configuratiebestand van dit project te configureren (dat is
ClientId
in het bestand TodoListService\Web.config).Selecteer onder BeherenEen API beschikbaar maken>Een bereik toevoegen. Accepteer de voorgestelde URI voor de toepassings-id (
api://{clientId}>
) door Opslaan en doorgaan te selecteren en de volgende informatie op te geven:- Voer bij Bereiknaam de naam in
access_as_user
. - Zorg ervoor dat de optie Beheerders en gebruikers is geselecteerd voor Wie kan toestemming verlenen?
- Voer in het vak Beheer weergavenaam van toestemming de naam in
Access TodoListService as a user
. - Typ in
Accesses the TodoListService web API as a user
het vak Beheer beschrijving van toestemming . - Voer in het vak Weergavenaam van gebruikerstoestemming de tekst in
Access TodoListService as a user
. - Voer in het vak Beschrijving van gebruikerstoestemming de tekst in
Accesses the TodoListService web API as a user
. - Laat Status op Ingeschakeld staan.
- Voer bij Bereiknaam de naam in
Selecteer Bereik toevoegen.
Het serviceproject configureren
Configureer het serviceproject zodat het overeenkomt met de geregistreerde web-API.
Open de oplossing in Visual Studio en open vervolgens het bestand Web.config in de hoofdmap van het TodoListService-project.
Vervang de waarde van de
ida:ClientId
parameter door de waarde client-id (toepassings-id) van de toepassing die u hebt geregistreerd in de App-registraties-portal.
Het nieuwe bereik toevoegen aan het bestand app.config
Voer de volgende stappen uit om het nieuwe bereik toe te voegen aan het bestand TodoListClient app.config :
Open het bestand app.config in de hoofdmap van het TodoListClient-project.
Plak de toepassings-id uit de toepassing die u hebt geregistreerd voor uw TodoListService-project in de
TodoListServiceScope
parameter, waarbij u de{Enter the Application ID of your TodoListService from the app registration portal}
tekenreeks vervangt.
Notitie
Zorg dat de toepassings-id de volgende notatie heeft: api://{TodoListService-Application-ID}/access_as_user
(waarbij {TodoListService-Application-ID}
de GUID is die de toepassings-id voor uw TodoListService-app vertegenwoordigt).
De web-app registreren (TodoListClient)
Registreer uw TodoListClient-app in App-registraties in Azure Portal en configureer vervolgens de code in het TodoListClient-project. Als de client en server worden beschouwd als dezelfde toepassing, kunt u dezelfde toepassing die is geregistreerd in stap 2 opnieuw gebruiken. Gebruik dezelfde toepassing als u wilt dat gebruikers zich aanmelden met een persoonlijk Microsoft-account.
De app registreren
Volg deze stappen om de TodoListClient-app te registreren:
Ga naar App-registraties op het Microsoft Identity Platform voor ontwikkelaars.
Selecteer Nieuwe registratie.
Wanneer de pagina Een toepassing registreren wordt geopend, voert u de registratiegegevens van de toepassing in:
- Voer in de sectie Naam een beschrijvende toepassingsnaam die gebruikers van de app te zien krijgen. Bijvoorbeeld: NativeClient-DotNet-TodoListClient.
- Bij Ondersteunde accounttypen selecteert u Accounts in een organisatieadreslijst.
- Selecteer Registreren om de toepassing te maken.
Notitie
In het bestand app.config van het TodoListClient-project is de standaardwaarde voor
ida:Tenant
ingesteld opcommon
. Mogelijke waarden zijn:common
: U kunt zich aanmelden met een werk- of schoolaccount of een persoonlijk Microsoft-account (omdat u accounts in een organisatiemap in een vorige stap hebt geselecteerd).organizations
: U kunt zich aanmelden met een werk- of schoolaccount.consumers
: U kunt zich alleen aanmelden met een persoonlijk Microsoft-account.
Selecteer verificatie op de pagina Overzicht van de app en voer vervolgens de volgende stappen uit om een platform toe te voegen:
- Selecteer onder Platformconfiguraties de knop Een platform toevoegen.
- Bij Mobiele toepassingen en bureaubladtoepassingen selecteert u Mobiele toepassingen en bureaubladtoepassingen.
- Schakel bij Omleidings-URI's het selectievakje
https://login.microsoftonline.com/common/oauth2/nativeclient
in. - Selecteer Configureren.
Selecteer API-machtigingen en voer vervolgens de volgende stappen uit om machtigingen toe te voegen:
- Selecteer de knop Een machtiging toevoegen.
- Selecteer het tabblad Mijn API's.
- Selecteer in de lijst met API's AppModelv2-NativeClient-DotNet-TodoListService-API of de naam die u hebt ingevoerd voor de web-API.
- Schakel de machtiging access_as_user in als dit selectievakje nog niet is ingeschakeld. Gebruik zo nodig het zoekvak.
- Selecteer de knop Toestemmingen toevoegen.
Uw project configureren
Configureer uw TodoListClient-project door de toepassings-id toe te voegen aan het bestand app.config .
In de portal App-registraties kopieert u vanaf de pagina Overzicht de waarde van de Toepassings-id (client).
Open het bestand app.config vanuit de hoofdmap van het TodoListClient-project en plak de waarde van de Toepassings-id in de
ida:ClientId
-parameter.
Uw projecten uitvoeren
Start beide projecten. Als u Visual Studio gebruikt:
Klik met de rechtermuisknop op de Visual Studio-oplossing en selecteer Eigenschappen
Selecteer In de algemene eigenschappen het opstartproject en vervolgens meerdere opstartprojecten.
Voor beide projecten kiest u Starten als de actie
Zorg ervoor dat de TodoListService-service eerst wordt gestart door deze met de pijl-omhoog naar de eerste positie in de lijst te verplaatsen.
Meld u aan om uw TodoListClient-project uit te voeren.
Druk op F5 om de projecten te starten. De servicepagina wordt geopend, evenals de bureaubladtoepassing.
Selecteer in de TodoListClient rechtsboven aanmelden en meld u aan met dezelfde referenties die u hebt gebruikt om uw toepassing te registreren of meld u aan als een gebruiker in dezelfde map.
Als u zich voor de eerste keer aanmeldt, wordt u mogelijk gevraagd om toestemming te geven voor de TodoListService-web-API.
De aanmelding vraagt ook het toegangstoken voor het bereik access_as_user om u toegang te geven tot de TodoListService-web-API en om de takenlijst te bewerken.
Uw clienttoepassing vooraf autoriseren
U kunt gebruikers uit andere mappen toegang geven tot uw web-API door de clienttoepassing vooraf te autoriseren voor toegang tot uw web-API. U doet dat door de toepassings-id van de client-app toe te voegen aan de lijst met vooraf geautoriseerde toepassingen voor uw web-API. Door een vooraf geautoriseerde client toe te voegen, zorgt u ervoor dat gebruikers toegang hebben tot uw web-API zonder dat u toestemming hoeft te geven.
- Open de eigenschappen van uw TodoListService-app in de portal App-registraties.
- In de sectie Een API beschikbaar maken, onder Geautoriseerde clienttoepassingen, selecteert u Een clienttoepassing toevoegen.
- Plak in het vak Client-id de toepassings-id van de TodoListClient-app.
- Selecteer in de sectie Gemachtigde bereiken het bereik voor de web-API
api://<Application ID>/access_as_user
. - Selecteer Toepassing toevoegen.
Uw project uitvoeren
- Druk op F5 om uw project uit te voeren. Uw TodoListClient-app wordt geopend.
- Selecteer in de rechterbovenhoek Aanmelden en meld u vervolgens aan met een persoonlijk Microsoft-account, zoals een live.com - of hotmail.com-account of een werk- of schoolaccount.
Optioneel: Aanmeldingstoegang beperken tot bepaalde gebruikers
Standaard kunnen persoonlijke accounts, zoals outlook.com - of live.com-accounts , of werk- of schoolaccounts van organisaties die zijn geïntegreerd met Microsoft Entra-id tokens aanvragen en toegang krijgen tot uw web-API.
Als u wilt bepalen wie zich kan aanmelden bij uw toepassing, gebruikt u een van de volgende opties:
Optie 1: De toegang tot één organisatie beperken (één tenant)
U kunt aanmeldingstoegang tot uw toepassing beperken tot gebruikersaccounts die zich in één Microsoft Entra-tenant bevinden, inclusief gastaccounts van die tenant. Dit scenario is gebruikelijk voor Line-Of-Business-toepassingen.
- Open het bestand App_Start \Startup.Auth en wijzig de waarde van het eindpunt voor metagegevens dat wordt doorgegeven aan de
OpenIdConnectSecurityTokenProvider
inhttps://login.microsoftonline.com/{Tenant ID}/v2.0/.well-known/openid-configuration
. U kunt ook de naam van de tenant gebruiken, bijvoorbeeldcontoso.onmicrosoft.com
. - Stel in hetzelfde bestand de eigenschap
ValidIssuer
op deTokenValidationParameters
in ophttps://sts.windows.net/{Tenant ID}/
en stel het argumentValidateIssuer
in optrue
.
Optie 2: Een aangepaste methode gebruiken om verleners te valideren
U kunt een aangepaste methode implementeren om verleners te valideren met behulp van de IssuerValidator
parameter. Als u meer informatie wilt over deze parameter, bekijk dan de TokenValidationParameters-klasse.
Help en ondersteuning
Als u hulp nodig hebt, een probleem wilt melden of meer informatie wilt over uw ondersteuningsopties, raadpleegt u Hulp en ondersteuning voor ontwikkelaars.
Volgende stappen
Meer informatie door een beveiligde ASP.NET Core-web-API te bouwen in de volgende reeks zelfstudies: