Guida introduttiva: Accedere agli utenti e chiamare l'API Microsoft Graph da un'app Web ASP.NET

In questa guida introduttiva si scarica ed esegue un esempio di codice che illustra un'applicazione Web ASP.NET in grado di accedere agli utenti con account Microsoft Entra.

Per un'illustrazione, vedere Funzionamento dell'esempio.

Prerequisiti

Registrare e scaricare l'app

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

Sono disponibili due opzioni per iniziare a compilare l'applicazione: configurazione automatica o manuale.

Configurazione automatica

Se si vuole configurare automaticamente l'app e quindi scaricare l'esempio di codice, seguire questa procedura:

  1. Accedere all'esperienza di avvio rapido dell'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione cloud Amministrazione istrator.
  2. Immettere un nome per l'applicazione e fare clic su Registra.
  3. Seguire le istruzioni per scaricare e configurare automaticamente la nuova applicazione in un solo clic.

Configurazione manuale

Per configurare manualmente l'applicazione e l'esempio di codice, usare le procedure seguenti.

Passaggio 1: Registrare l'applicazione

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione cloud Amministrazione istrator.
  2. Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant in cui si vuole registrare l'applicazione dal menu Directory e sottoscrizioni.
  3. Passare a Applicazioni> di identità>Registrazioni app e selezionare Nuova registrazione.
  4. In Nome immettere un nome per l'applicazione. Ad esempio, immettere ASPNET-Quickstart. Gli utenti della tua app visualizzeranno questo nome e potrai modificarlo in un secondo momento.
  5. Impostare il tipo di URI di reindirizzamento su Web e il valore su https://localhost:44368/.
  6. Selezionare Registra.
  7. In Gestisci selezionare Autenticazione.
  8. Nella sezione Concessione implicita e flussi ibridi selezionare Token ID.
  9. Seleziona Salva.

Passaggio 2: Scaricare il progetto

Scaricare l'esempio di codice ASP.NET

Suggerimento

Per evitare errori causati da limitazioni di lunghezza del percorso in Windows, è consigliabile estrarre l'archivio o clonare il repository in una directory vicina alla radice dell'unità.

Passaggio 3: Eseguire il progetto

  1. Estrarre il file .zip in una cartella locale vicina alla cartella radice. Ad esempio, estrarre in C:\Azure-Samples.

    È consigliabile estrarre l'archivio in una directory vicina alla radice dell'unità per evitare errori causati dalle limitazioni della lunghezza del percorso in Windows.

  2. Aprire la soluzione in Visual Studio (AppModelv2-WebApp-OpenID Connessione-DotNet.sln).

  3. A seconda della versione di Visual Studio, potrebbe essere necessario fare clic con il pulsante destro del mouse sul progetto AppModelv2-WebApp-OpenID Connessione-DotNet e quindi scegliere Ripristina pacchetti NuGet.

  4. Aprire la console Gestione pacchetti selezionando Visualizza>altre finestre> Gestione pacchetti Console. Quindi eseguire Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

  5. Modificare appsettings.json e sostituire i parametri ClientId, Tenante redirectUri con:

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

    Nel codice:

    • Enter_the_Application_Id_here è l'ID applicazione (client) della registrazione dell'app creata in precedenza. Trovare l'ID applicazione (client) nella pagina Panoramica dell'app in Registrazioni app nell'interfaccia di amministrazione di Microsoft Entra.
    • Enter_the_Tenant_Info_Here è una delle opzioni seguenti:
      • Se l'applicazione supporta solo l'organizzazione personale, sostituire questo valore con l'ID directory (tenant) o il nome del tenant (ad esempio, contoso.onmicrosoft.com). Trovare l'ID directory (tenant) nella pagina Panoramica dell'app in Registrazioni app nell'interfaccia di amministrazione di Microsoft Entra.
      • Se l'applicazione supporta Accounts in qualsiasi directory organizzativa, sostituire questo valore con organizations.
      • Se l'applicazione supporta tutti gli utenti dell'account Microsoft, sostituire questo valore con common.
    • redirectUriè l'URI di reindirizzamento immesso in precedenza in Registrazioni app nell'interfaccia di amministrazione di Microsoft Entra.

Ulteriori informazioni

Questa sezione include una panoramica del codice necessario per consentire l'accesso degli utenti. Questa panoramica può essere utile per comprendere il funzionamento del codice, gli argomenti principali e come aggiungere l'accesso a un'applicazione ASP.NET esistente.

Funzionamento dell'esempio

Diagramma dell'interazione tra il Web browser, l'app Web e Microsoft Identity Platform nell'app di esempio.

Pacchetti NuGet middleware OWIN

È possibile configurare la pipeline di autenticazione con l'autenticazione basata su cookie usando OpenID Connessione in ASP.NET con pacchetti middleware OWIN. È possibile installare questi pacchetti eseguendo i comandi seguenti in Gestione pacchetti Console in Visual Studio:

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

Classe di avvio OWIN

Il middleware OWIN usa una classe di avvio che viene eseguita all'avvio del processo di hosting. In questa guida introduttiva il file startup.cs si trova nella cartella radice. Il codice seguente illustra i parametri usati da questa guida introduttiva:

    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();
    }
Where Descrizione
ClientId ID applicazione dell'applicazione registrata nel portale di Azure.
Authority Endpoint del servizio token di sicurezza (STS) per l'autenticazione dell'utente. In genere https://login.microsoftonline.com/{tenant}/v2.0 è per il cloud pubblico. In tale URL { tenant} è il nome del tenant, l'ID tenant o common per un riferimento all'endpoint comune. L'endpoint comune viene usato per le applicazioni multi-tenant.
RedirectUri URL in cui gli utenti vengono inviati dopo l'autenticazione in Microsoft Identity Platform.
PostLogoutRedirectUri URL in cui gli utenti vengono inviati dopo la disconnessione.
Scope Elenco di ambiti richiesti, separati da spazi.
ResponseType Richiesta che la risposta dall'autenticazione contiene un codice di autorizzazione e un token ID.
TokenValidationParameters Elenco di parametri per la convalida del token. In questo caso, ValidateIssuer è impostato su false per indicare che può accettare accessi da qualsiasi tipo di account personale, aziendale o dell'istituto di istruzione.
Notifications Elenco di delegati che possono essere eseguiti sui OpenIdConnect messaggi.

Richiesta di autenticazione

È possibile indurre un utente a eseguire l'accesso inserendo una richiesta di autenticazione nel controller in uso:

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

Suggerimento

La richiesta di una richiesta di autenticazione tramite questo metodo è facoltativa. In genere si usa quando si vuole che una visualizzazione sia accessibile sia da utenti autenticati che non autenticati. È possibile in alternativa proteggere i controller usando il metodo descritto nella sezione successiva.

Attributo per la protezione di un controller o di un'azione del controller

È possibile proteggere un controller o le azioni del controller usando l'attributo [Authorize] . Questo attributo limita l'accesso al controller o alle azioni consentendo solo agli utenti autenticati di accedere alle azioni nel controller. Una richiesta di autenticazione verrà quindi eseguita automaticamente quando un utente non autenticato tenta di accedere a una delle azioni o dei controller decorati dall'attributo [Authorize] .

Chiamare Microsoft Graph dal controller

È possibile chiamare Microsoft Graph dal controller ottenendo l'istanza di GraphServiceClient usando il GetGraphServiceClient metodo di estensione nel controller, come nel codice seguente:

    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();
    }

Assistenza e supporto

Se è necessaria assistenza, si vuole segnalare un problema o si vogliono ottenere informazioni sulle opzioni di supporto, vedere Assistenza e supporto per gli sviluppatori.

Passaggi successivi

Per una guida dettagliata completa sulla creazione di applicazioni e nuove funzionalità, inclusa una spiegazione completa di questo argomento di avvio rapido, provare l'esercitazione ASP.NET.