Quickstart: Gebruikers aanmelden en de Microsoft Graph API aanroepen vanuit een ASP.NET-web-app

In deze quickstart downloadt en voert u een codevoorbeeld uit dat een ASP.NET-webtoepassing laat zien waarmee gebruikers kunnen worden aangemeld met Microsoft Entra-accounts.

Zie Hoe het voorbeeld werkt voor een illustratie.

Vereisten

De app registreren en downloaden

Tip

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

U hebt twee opties om te beginnen met het bouwen van uw toepassing: automatische of handmatige configuratie.

Automatische configuratie

Als u uw toepassing automatisch wilt configureren en vervolgens het codevoorbeeld wilt downloaden, volgt u deze stappen:

  1. Meld u aan bij de quickstart van het Microsoft Entra-beheercentrum als ten minste een cloudtoepassing Beheer istrator.
  2. Voer een naam in voor de toepassing en selecteer Registreren.
  3. Volg de instructies om de nieuwe toepassing met slechts één klik te downloaden en automatisch te configureren.

Handmatige configuratie

Als u uw toepassing en codevoorbeeld handmatig wilt configureren, gebruikt u de volgende procedures.

Stap 1: Uw toepassing registreren

  1. Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een cloudtoepassing Beheer istrator.
  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 en selecteer Nieuwe registratie.
  4. Voer voor Naam een naam in voor uw toepassing. Voer bijvoorbeeld ASPNET-Quickstart in. Gebruikers van uw app zien de naam. U kunt deze later wijzigen.
  5. Stel het type URI voor omleiding in op Web en waarde op https://localhost:44368/.
  6. Selecteer Registreren.
  7. Selecteer Verificatie onder Beheren.
  8. Selecteer in de sectie Impliciete toekenning en hybride stromenID-tokens.
  9. Selecteer Opslaan.

Stap 2: Het project downloaden

Het ASP.NET-codevoorbeeld downloaden

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.

Stap 3: Het project uitvoeren

  1. Pak het zip-bestand uit in een lokale map dicht bij de hoofdmap. Pak bijvoorbeeld uit naar C:\Azure-Samples.

    We raden u aan het archief te extraheren in een map dicht bij de hoofdmap van uw station om fouten te voorkomen die worden veroorzaakt door padlengtebeperkingen in Windows.

  2. Open de oplossing in Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).

  3. Afhankelijk van de versie van Visual Studio, moet u mogelijk met de rechtermuisknop klikken op het project AppModelv2-WebApp-OpenIDConnect-DotNet en dan Restore NuGet packages selecteren.

  4. Open de Package Manager-console door het selecteren van Weergave>Overige Windows>Package Manager-console. Voer vervolgens Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r uit.

  5. Bewerk appsettings.json en vervang de parameters ClientIdTenanten redirectUri door:

    "ClientId" :"Enter_the_Application_Id_here" />
    "TenantId": "Enter_the_Tenant_Info_Here" />
    "RedirectUri" :"https://localhost:44368/" />
    

    In die code:

    • Enter_the_Application_Id_here is de toepassings-id (client) van de app-registratie die u eerder hebt gemaakt. Zoek de toepassings-id (client) op de pagina Overzicht van de app in App-registraties in het Microsoft Entra-beheercentrum.
    • Enter_the_Tenant_Info_Here is een van de volgende opties:
      • Als uw toepassing Alleen mijn organisatie ondersteunt, vervangt u deze waarde met de map-id (tenant) of tenantnaam (bijvoorbeeld contoso.onmicrosoft.com). Zoek de map-id (tenant) op de overzichtspagina van de app in App-registraties in het Microsoft Entra-beheercentrum.
      • Als uw toepassing ondersteuning biedt voor accounts in elke organisatiemap, vervangt u waarde door organizations.
      • Als uw toepassing Alle Microsoft-accountgebruikers ondersteunt, vervang deze waarde dan door common.
    • redirectUriis de omleidings-URI die u eerder hebt ingevoerd in App-registraties in het Microsoft Entra-beheercentrum.

Meer informatie

Deze sectie bevat een overzicht van de code die vereist is voor het aanmelden van gebruikers. Dit overzicht kan handig zijn om te begrijpen hoe de code werkt, wat de belangrijkste argumenten zijn en hoe u zich kunt aanmelden bij een bestaande ASP.NET-toepassing.

Hoe het voorbeeld werkt

Diagram van de interactie tussen de webbrowser, de web-app en het Microsoft Identity-platform in de voorbeeld-app.

OWIN Middleware NuGet-pakketten

U kunt de verificatiepijplijn instellen met verificatie op basis van cookies met OpenID Connect in ASP.NET met OWIN Middleware-pakketten. U kunt deze pakketten installeren door de volgende opdrachten in de Package Manager-console binnen Visual Studio uit te voeren:

Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies

OWIN-opstartklasse

OWIN-middleware maakt gebruik van een opstartklasse die wordt uitgevoerd wanneer het hostingproces wordt gestart. In deze quickstart bevindt het bestand startup.cs zich in de hoofdmap. De volgende code toont de parameters die in deze snelstartgids worden gebruikt:

    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();

        app.AddMicrosoftIdentityWebApp(factory);
        factory.Services
            .Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
            .AddMicrosoftGraph()
            .AddInMemoryTokenCaches();
        factory.Build();
    }
Waar Beschrijving
ClientId De toepassings-id van de toepassing die is geregistreerd in Azure Portal
Authority STS-eindpunt (Security Token Service) voor de gebruiker om te verifiëren. Dit betreft meestal https://login.microsoftonline.com/{tenant}/v2.0 de openbare cloud. In die URL is {tenant} de naam van uw tenant, uw tenant-id, of common voor een referentie voor het algemene eindpunt. (Het algemene eindpunt wordt gebruikt voor toepassingen met meerdere tenants.)
RedirectUri URL waar gebruikers naartoe worden gestuurd na verificatie bij het Microsoft Identity-platform
PostLogoutRedirectUri De URL waar gebruikers naartoe worden gestuurd na afmelding
Scope De lijst met bereiken die wordt aangevraagd, gescheiden door spaties.
ResponseType De aanvraag dat het antwoord van verificatie een autorisatiecode en een id-token bevat.
TokenValidationParameters Een lijst met parameters voor de validatie van tokens. In dit geval is ValidateIssuer ingesteld op false om aan te geven dat aanmeldingen vanaf persoonlijke, werk- of schoolaccounttype kunnen worden geaccepteerd
Notifications Een lijst met gemachtigden die op OpenIdConnect berichten kunnen worden uitgevoerd.

Verificatiecontrole.

U kunt afdwingen dat een gebruiker zich aanmeldt door een verificatievraag aan te vragen in uw controller:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Tip

Het aanvragen van een verificatievraag met deze methode is optioneel. Normaal gesproken gebruikt u deze als u wilt dat een weergave toegankelijk is voor zowel geverifieerde als niet-geverifieerde gebruikers. U kunt controllers ook beveiligen met behulp van de methode die wordt beschreven in de volgende sectie.

Kenmerk voor het beveiligen van een controller of controlleracties

U kunt een controller of controlleracties beveiligen met het kenmerk [Authorize]. Dit kenmerk beperkt de toegang tot de controller of acties door alleen geverifieerde gebruikers toegang te geven tot de acties in de controller. Er wordt dan automatisch een verificatievraag uitgevoerd wanneer een niet-geverifieerde gebruiker toegang probeert te krijgen tot een van de acties of controllers die zijn ingericht door het [Authorize] kenmerk.

Microsoft Graph aanroepen vanaf de controller

U kunt Microsoft Graph aanroepen vanaf de controller door het exemplaar van GraphServiceClient op te halen met behulp van de GetGraphServiceClient extensiemethode op de controller, zoals in de volgende code:

    try
    { 
        var me = await this.GetGraphServiceClient().Me.GetAsync();
        ViewBag.Username = me.DisplayName;
    }
    catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
        return View();
    }

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

Probeer de ASP.NET-zelfstudie voor een volledige stapsgewijze handleiding voor het bouwen van toepassingen en nieuwe functies, met inbegrip van een volledige uitleg van deze snelstart.