Guida introduttiva: ASP.NET'app Web che accede agli utenti di Microsoft Entra

Benvenuto! Questa probabilmente non è la pagina che ti aspettavi. Mentre si lavora su una correzione, questo collegamento dovrebbe portare all'articolo corretto:

Guida introduttiva: Aggiungere l'accesso con Microsoft a un'app Web ASP.NET

Ci scusiamo per l'inconveniente e apprezziamo la vostra pazienza mentre lavoriamo per risolvere questo problema.

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.

Passaggio 1: Configurare l'applicazione nel portale di Azure

Per il funzionamento dell'esempio di codice in questa guida introduttiva, immettere https://localhost:44368/ per URI di reindirizzamento.

Already configured L'applicazione è configurata con questo attributo.

Passaggio 2: Scaricare il progetto

Eseguire il progetto usando Visual Studio 2019.

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: L'app è configurata e pronta per l'esecuzione

Il progetto è stato configurato con i valori delle proprietà dell'app.

  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.

Nota

Enter_the_Supported_Account_Info_Here

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

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

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.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

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());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the client ID, authority, and redirect URI as obtained from Web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the code id_token, which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.CodeIdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
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.

Nota

L'impostazione di ValidateIssuer = false è una semplificazione per questo avvio rapido. Nelle applicazioni reali convalidare l'emittente. Vedere gli esempi per comprendere come eseguire questa operazione.

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

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.