Configurare il progettoSet up your project

Questa sezione illustra la procedura per l'installazione e la configurazione della pipeline di autenticazione tramite middleware OWIN in un progetto ASP.NET mediante OpenID Connect.This section shows the steps to install and configure the authentication pipeline via OWIN middleware on an ASP.NET project using OpenID Connect.

Se invece si preferisce scaricare questo progetto Visual Studio di esempio,Prefer to download this sample's Visual Studio project instead? Scaricare un progetto e passare direttamente al passaggio di configurazione per configurare il codice di esempio prima di eseguirlo.Download a project and skip to the Configuration step to configure the code sample before executing.

Creare un progetto ASP.NETCreate your ASP.NET project

  1. In Visual Studio: File > New > ProjectIn Visual Studio: File > New > Project
  2. In Visual C#\Web selezionare ASP.NET Web Application (.NET Framework)Under Visual C#\Web, select ASP.NET Web Application (.NET Framework).
  3. Assegnare un nome all'applicazione e fare clic su OKName your application and click OK
  4. Selezionare Empty e quindi selezionare la casella di controllo per aggiungere i riferimenti MVCSelect Empty and select the checkbox to add MVC references

Aggiungere i componenti per l'autenticazioneAdd authentication components

  1. In Visual Studio: Tools > Nuget Package Manager > Package Manager ConsoleIn Visual Studio: Tools > Nuget Package Manager > Package Manager Console
  2. Aggiungere pacchetti NuGet del middleware OWIN digitando quanto segue nella finestra della Console di Gestione pacchetti:Add OWIN middleware NuGet packages by typing the following in the Package Manager Console window:
Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

Informazioni sulle librerieAbout these libraries

Le librerie precedenti abilitano l'accesso Single Sign-On (SSO) usando OpenID Connect tramite l'autenticazione basata su cookie.The libraries above enable single sign-on (SSO) using OpenID Connect via cookie-based authentication. Al termine dell'autenticazione e dopo l'invio del token che rappresenta l'utente all'applicazione, il middleware OWIN crea un cookie di sessione.After authentication is completed and the token representing the user is sent to your application, OWIN middleware creates a session cookie. Il browser usa quindi questo cookie nelle richieste successive, in modo che l'utente non debba digitare di nuovo la password, e non sono necessarie operazioni di verifica aggiuntive.The browser then uses this cookie on subsequent requests so the user doesn't need to retype their password, and no additional verification is needed.

Configurare la pipeline di autenticazioneConfigure the authentication pipeline

La procedura seguente consente di creare una classe di avvio del middleware OWIN per configurare l'autenticazione OpenID Connect.The steps below are used to create an OWIN middleware Startup Class to configure OpenID Connect authentication. Questa classe verrà eseguita automaticamente all'avvio del processo di IIS.This class will be executed automatically when your IIS process starts.

Se il progetto non include alcun file Startup.cs nella cartella radice:If your project doesn't have a Startup.cs file in the root folder:

  1. Fare clic con il pulsante destro del mouse sulla cartella radice del progetto: > Add > New Item... > OWIN Startup classRight click on the project's root folder: > Add > New Item... > OWIN Startup class
  2. Assegnare il nome Startup.csName it Startup.cs

Assicurarsi che la classe selezionata sia una classe di avvio di OWIN e non una classe C# standard.Make sure the class selected is an OWIN Startup Class and not a standard C# class. Per confermarlo, verificare se [assembly: OwinStartup(typeof({NameSpace}.Startup))] viene visualizzato sopra lo spazio dei nomi.Confirm this by checking if you see [assembly: OwinStartup(typeof({NameSpace}.Startup))] above the namespace.

  1. Aggiungere i riferimenti OWIN e Microsoft.IdentityModel a Startup.cs:Add OWIN and Microsoft.IdentityModel references to Startup.cs:
using Microsoft.Owin;
using Owin;
using Microsoft.IdentityModel.Protocols;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.OpenIdConnect;
using Microsoft.Owin.Security.Notifications;
  1. Sostituire la classe di avvio con il codice seguente:Replace Startup class with the code below:
public class Startup
{        
    // The Client ID is used by the application to uniquely identify itself to Azure AD.
    string clientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"];

    // RedirectUri is the URL where the user will be redirected to after they sign in.
    string redirectUri = System.Configuration.ConfigurationManager.AppSettings["RedirectUri"];

    // Tenant is the tenant ID (e.g. contoso.onmicrosoft.com, or 'common' for multi-tenant)
    static string tenant = System.Configuration.ConfigurationManager.AppSettings["Tenant"];

    // Authority is the URL for authority, composed by Azure Active Directory v2 endpoint and the tenant name (e.g. https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0)
    string authority = String.Format(System.Globalization.CultureInfo.InvariantCulture, System.Configuration.ConfigurationManager.AppSettings["Authority"], tenant);

    /// <summary>
    /// Configure OWIN to use OpenIdConnect 
    /// </summary>
    /// <param name="app"></param>
    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());
            app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                // Sets the ClientId, authority, RedirectUri 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 is using the home page
                PostLogoutRedirectUri = redirectUri,
                Scope = OpenIdConnectScopes.OpenIdProfile,
                // ResponseType is set to request the id_token - which contains basic information about the signed-in user
                ResponseType = OpenIdConnectResponseTypes.IdToken,
                // 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 organizations, set ValidateIssuer to true and '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 ValidIssuers parameter 
                TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters() { ValidateIssuer = false },
                // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    AuthenticationFailed = OnAuthenticationFailed
                }
            }
        );
    }

    /// <summary>
    /// Handle failed authentication requests by redirecting the user to the home page with an error in the query string
    /// </summary>
    /// <param name="context"></param>
    /// <returns></returns>
    private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> context)
    {
        context.HandleResponse();
        context.Response.Redirect("/?errormessage=" + context.Exception.Message);
        return Task.FromResult(0);
    }
}

Altre informazioniMore Information

I parametri forniti in OpenIDConnectAuthenticationOptions fungeranno da coordinate per consentire all'applicazione di comunicare con Azure AD.The parameters you provide in OpenIDConnectAuthenticationOptions serve as coordinates for the application to communicate with Azure AD. Poiché il middleware OpenID Connect usa i cookie in background, è anche necessario configurare l'autenticazione dei cookie, come illustrato nel codice precedente.Because the OpenID Connect middleware uses cookies in the background, you also need to set up cookie authentication as the code above shows. Il valore ValidateIssuer segnala a OpenIdConnect di non limitare l'accesso a un'organizzazione specifica.The ValidateIssuer value tells OpenIdConnect to not restrict access to one specific organization.