Share via


Quickstart: Een ASP.NET Core-web-API beveiligen met het Microsoft Identity Platform

In deze quickstart wordt een voorbeeld van ASP.NET Core-web-API-code gebruikt om te laten zien hoe u de toegang tot resources tot geautoriseerde accounts beperkt. In het voorbeeld wordt gebruikgemaakt van ASP.NET Core Identity die communiceert met Microsoft Authentication Library (MSAL) om verificatie af te handelen.

Vereisten

De toepassings- en record-id's registreren

Tip

Stappen in dit artikel kunnen enigszins variƫren op basis van de portal waaruit u begint.

Als u de registratie wilt voltooien, geeft u de toepassing een naam op en geeft u de ondersteunde accounttypen op. Zodra de toepassing is geregistreerd, worden op de pagina Overzicht van de toepassing de id's weergegeven die nodig zijn in de broncode van de toepassing.

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

  2. Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingen in het bovenste menu om over te schakelen naar de tenant waarin u de toepassing wilt registreren in het menu Mappen en abonnementen.

  3. Blader naar identiteitstoepassingen>> App-registraties.

  4. Selecteer Nieuwe registratie.

  5. Voer een naam in voor de toepassing, zoals NewWebAPI1.

  6. Bij Ondersteunde accounttypen selecteert u Enkel accounts in deze organisatieadreslijst. Selecteer De optie Help mij kiezen voor informatie over verschillende accounttypen.

  7. Selecteer Registreren.

    Schermopname die laat zien hoe u een naam invoert en het accounttype selecteert.

  8. 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.

    Schermopname van de id-waarden op de overzichtspagina.

Notitie

De ondersteunde accounttypen kunnen worden gewijzigd door te verwijzen naar De accounts wijzigen die door een toepassing worden ondersteund.

Een API beschikbaar maken

Zodra de API is geregistreerd, kunt u de machtiging ervan configureren door de bereiken te definiƫren die de API beschikbaar maakt voor clienttoepassingen. Clienttoepassingen vragen toestemming om bewerkingen uit te voeren door een toegangstoken samen met de aanvragen door te geven aan de beveiligde web-API. De web-API voert de aangevraagde bewerking alleen uit als het toegangstoken dat wordt ontvangen de vereiste bereiken bevat.

  1. Selecteer onder Beheren de optie Een API > beschikbaar maken en een bereik toevoegen. Accepteer de voorgestelde URI(api://{clientId}) voor de toepassings-id door Opslaan te selecteren en door te gaan. Dit {clientId} is de waarde die is vastgelegd op de pagina Overzicht . Voer vervolgens de volgende gegevens in:

    1. Voer bij Bereiknaam de naam inForecast.Read.
    2. Zorg ervoor dat de optie Beheerders en gebruikers is geselecteerd voor Wie kan toestemming verlenen?
    3. Voer in het vak Beheer weergavenaam van toestemming de naam inRead forecast data.
    4. Typ in Allows the application to read weather forecast datahet vak Beheer beschrijving van toestemming .
    5. Voer in het vak Weergavenaam van gebruikerstoestemming de tekst in Read forecast data.
    6. Voer in het vak Beschrijving van gebruikerstoestemming de tekst in Allows the application to read weather forecast data.
    7. Zorg ervoor dat de status is ingesteld op Ingeschakeld.
  2. Selecteer Bereik toevoegen. Als het bereik correct is ingevoerd, wordt dit weergegeven in het deelvenster Een API beschikbaar maken.

    Schermopname van de veldwaarden bij het toevoegen van het bereik aan een API.

De voorbeeldtoepassing klonen of downloaden

Als u de voorbeeldtoepassing wilt verkrijgen, kunt u deze klonen vanuit GitHub of downloaden als een .zip-bestand .

  • Als u het voorbeeld wilt klonen, opent u een opdrachtprompt en navigeert u naar de locatie waar u het project wilt maken en voert u de volgende opdracht in:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  • Download het .zip-bestand. Pak het uit naar een bestandspad waarbij de lengte van de naam minder dan 260 tekens is.

De ASP.NET Core-voorbeeldtoepassing configureren

  1. Open in uw IDE de projectmap ms-identity-docs-code-dotnet/web-api met het voorbeeld.

  2. Open appsettings.json het bestand, dat het volgende codefragment bevat:

    {
      "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center",
        "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center",
        "Scopes": "Forecast.Read"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    

    Zoek het volgende key:

    • ClientId - De id van de toepassing, ook wel de client genoemd. Vervang de value tekst tussen aanhalingstekens door de toepassings-id (client) die eerder is vastgelegd op de pagina Overzicht van de geregistreerde toepassing.
    • TenantId - De id van de tenant waar de toepassing is geregistreerd. Vervang de value tekst tussen aanhalingstekens door de id-waarde van directory (tenant) die eerder is vastgelegd op de pagina Overzicht van de geregistreerde toepassing.

De voorbeeldtoepassing uitvoeren

  1. Voer de volgende opdracht uit om de app te starten:

    dotnet run
    
  2. Er wordt een uitvoer weergegeven zoals in het volgende voorbeeld:

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

    Noteer het poortnummer in de https://localhost:{port} URL.

  3. Als u wilt controleren of het eindpunt is beveiligd, gebruikt u de volgende cURL-opdracht in Bash om een niet-geverifieerde HTTP GET-aanvraag te verzenden in Bash:

    curl -X GET https://localhost:5001/weatherforecast -ki
    

    Het verwachte antwoord is 401 Niet geautoriseerd met uitvoer die vergelijkbaar is met:

    user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki
    HTTP/2 401
    date: Fri, 23 Sep 2023 23:34:24 GMT
    server: Kestrel
    www-authenticate: Bearer
    content-length: 0