[1. Introduction] ## 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: powershell 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 siano necessarie operazioni di verifica aggiuntive.The browser then uses this cookie on subsequent requests so the user doesn't need to retype the 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. > [!TIP] > 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: csharp using Microsoft.Owin; using Owin; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Microsoft.IdentityModel.Tokens; using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; using Microsoft.Owin.Security.Notifications; 2. Sostituire la classe di avvio con il codice seguente:Replace Startup class with the code below: csharp 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 = OpenIdConnectScope.OpenIdProfile, // ResponseType is set to request the id_token - which contains basic information about the signed-in user ResponseType = OpenIdConnectResponseType.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 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. ## Aggiungere un controller per gestire le richieste di accesso e disconnessioneAdd a controller to handle sign-in and sign-out requests Questo passaggio illustra come creare un nuovo controller per esporre i metodi di accesso e disconnessione.This step shows how to create a new controller to expose sign-in and sign-out methods. 1. Fare clic con il pulsante destro del mouse sulla cartella Controllers e scegliere Add > Controller.Right click the Controllers folder and select Add > Controller 2. Selezionare MVC (.NET version) Controller – Empty.Select MVC (.NET version) Controller – Empty. 3. Fare clic su Aggiungi.Click Add 4. Assegnare il nome HomeController e fare clic su Aggiungi.Name it HomeController and click Add 5. Aggiungere i riferimenti OWIN alla classe:Add OWIN references to the class: csharp using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; 6. Aggiungere al controller i due metodi seguenti per gestire l'accesso e la disconnessione avviando una richiesta di autenticazione tramite codice:Add the two methods below to handle sign-in and sign-out to your controller by initiating an authentication challenge via code: csharp /// <summary> /// Send an OpenID Connect sign-in request. /// Alternatively, you can just decorate the SignIn method with the [Authorize] attribute /// </summary> public void SignIn() { if (!Request.IsAuthenticated) { HttpContext.GetOwinContext().Authentication.Challenge( new AuthenticationProperties{ RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); } } /// <summary> /// Send an OpenID Connect sign-out request. /// </summary> public void SignOut() { HttpContext.GetOwinContext().Authentication.SignOut( OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType); } ## Creare la home page dell'app per l'accesso degli utenti tramite un pulsante di accessoCreate the app's home page to sign in users via a sign-in button In Visual Studio creare una nuova visualizzazione per aggiungere il pulsante di accesso e mostrare le informazioni relative all'utente dopo l'autenticazione:In Visual Studio, create a new view to add the sign-in button and display user information after authentication: 1. Fare clic con il pulsante destro del mouse sulla cartella Views\Home e scegliere Add View.Right click the Views\Home folder and select Add View 2. Denominarlo Index.Name it Index. 3. Aggiungere al file il codice HTML seguente, che include il pulsante di accesso:Add the following HTML, which includes the sign-in button, to the file: html <html> <head> <meta name="viewport" content="width=device-width" /> <title>Sign in with Microsoft Guide</title> </head> <body> @if (!Request.IsAuthenticated) { <!-- If the user is not authenticated, display the sign-in button --> <a href="@Url.Action("SignIn", "Home")" style="text-decoration: none;"> <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="300px" height="50px" viewBox="0 0 3278 522" class="SignInButton"> <style type="text/css">.fil0:hover {fill: #4B4B4B;} .fnt0 {font-size: 260px;font-family: 'Segoe UI Semibold', 'Segoe UI'; text-decoration: none;}</style> <rect class="fil0" x="2" y="2" width="3174" height="517" fill="black" /> <rect x="150" y="129" width="122" height="122" fill="#F35325" /> <rect x="284" y="129" width="122" height="122" fill="#81BC06" /> <rect x="150" y="263" width="122" height="122" fill="#05A6F0" /> <rect x="284" y="263" width="122" height="122" fill="#FFBA08" /> <text x="470" y="357" fill="white" class="fnt0">Sign in with Microsoft</text> </svg> </a> } else { <span><br/>Hello @System.Security.Claims.ClaimsPrincipal.Current.FindFirst("name").Value;</span> <br /><br /> @Html.ActionLink("See Your Claims", "Index", "Claims") <br /><br /> @Html.ActionLink("Sign out", "SignOut", "Home") } @if (!string.IsNullOrWhiteSpace(Request.QueryString["errormessage"])) { <div style="background-color:red;color:white;font-weight: bold;">Error: @Request.QueryString["errormessage"]</div> } </body> </html> > ### Altre informazioniMore Information > Questa pagina aggiunge un pulsante di accesso in formato SVG con sfondo nero:This page adds a sign-in button in SVG format with a black background:
Accedi con MicrosoftSign in with Microsoft
Per altri pulsanti di accesso, vedere questa pagina.For more sign-in buttons, please go to the this page. ## Aggiungere un controller per visualizzare le attestazioni dell'utenteAdd a controller to display user's claims Questo controller illustra gli usi dell'attributo [Authorize] per la protezione di un controller.This controller demonstrates the uses of the [Authorize] attribute to protect a controller. Questo attributo limita l'accesso al controller ai soli utenti autenticati.This attribute restricts access to the controller by only allowing authenticated users. Il codice seguente usa l'attributo per visualizzare le attestazioni utente recuperate durante l'accesso.The code below makes use of the attribute to display user claims that were retrieved as part of the sign-in. 1. Fare clic con il pulsante destro del mouse sulla cartella Controllers e scegliere Add > Controller.Right click the Controllers folder: Add > Controller 2. Selezionare MVC {version} Controller – Empty.Select MVC {version} Controller – Empty. 3. Fare clic su Aggiungi.Click Add 4. Assegnare il nome ClaimsController.Name it ClaimsController 5. Sostituire il codice della classe controller con il codice seguente, che aggiunge l'attributo [Authorize] alla classe:Replace the code of your controller class with the code below - this adds the [Authorize] attribute to the class: csharp [Authorize] public class ClaimsController : Controller { /// <summary> /// Add user's claims to viewbag /// </summary> /// <returns></returns> public ActionResult Index() { var userClaims = User.Identity as System.Security.Claims.ClaimsIdentity; //You get the user’s first and last name below: ViewBag.Name = userClaims?.FindFirst("name")?.Value; // The 'preferred_username' claim can be used for showing the username ViewBag.Username = userClaims?.FindFirst("preferred_username")?.Value; // The subject/ NameIdentifier claim can be used to uniquely identify the user across the web ViewBag.Subject = userClaims?.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value; // TenantId is the unique Tenant Id - which represents an organization in Azure AD ViewBag.TenantId = userClaims?.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid")?.Value; return View(); } } > ### Altre informazioniMore Information > A causa dell'uso dell'attributo [Authorize], tutti i metodi di questo controller possono essere eseguiti solo se l'utente è autenticato.Because of the use of the [Authorize] attribute, all methods of this controller can only be executed if the user is authenticated. Se un utente non autenticato prova ad accedere al controller, OWIN avvierà una richiesta di autenticazione e imporrà all'utente di autenticarsi.If the user is not authenticated and tries to access the controller, OWIN will initiate an authentication challenge and force the user to authenticate. Il codice riportato sopra cerca nell'elenco di attestazioni attributi utente specifici inclusi nel token ID dell'utente.The code above looks at the list of claims for specific user attributes included in the user’s Id token. Tali attributi includono nome e cognome, nome utente e soggetto ID utente globale dell'utente.These attributes include the user’s full name and username, as well as the global user identifier subject. Contengono anche l'ID tenant, che rappresenta l'ID dell'organizzazione dell'utente.It also contains the Tenant ID, which represents the ID for the user’s organization. ## Creare una visualizzazione per mostrare le attestazioni dell'utenteCreate a view to display the user's claims In Visual Studio creare una nuova visualizzazione per mostrare le attestazioni dell'utente in una pagina Web:In Visual Studio, create a new view to display the user's claims in a web page: 1. Fare clic con il pulsante destro del mouse sulla cartella Views\Claims e scegliere Add View.Right click the Views\Claims folder and: Add View 2. Denominarlo Index.Name it Index. 3. Aggiungere il codice HTML seguente al file:Add the following HTML to the file: html <html> <head> <meta name="viewport" content="width=device-width" /> <title>Sign in with Microsoft Sample</title> <link href="@Url.Content("~/Content/bootstrap.min.css")" rel="stylesheet" type="text/css" /> </head> <body style="padding:50px"> <h3>Main Claims:</h3> <table class="table table-striped table-bordered table-hover"> <tr><td>Name</td><td>@ViewBag.Name</td></tr> <tr><td>Username</td><td>@ViewBag.Username</td></tr> <tr><td>Subject</td><td>@ViewBag.Subject</td></tr> <tr><td>TenantId</td><td>@ViewBag.TenantId</td></tr> </table> <br /> <h3>All Claims:</h3> <table class="table table-striped table-bordered table-hover table-condensed"> @foreach (var claim in System.Security.Claims.ClaimsPrincipal.Current.Claims) { <tr><td>@claim.Type</td><td>@claim.Value</td></tr> } </table> <br /> <br /> @Html.ActionLink("Sign out", "SignOut", "Home", null, new { @class = "btn btn-primary" }) </body> </html> ## Registrare l'applicazioneRegister your application Per registrare l'applicazione e aggiungere le relative informazioni di registrazione alla soluzione, sono possibili due opzioni:To register your application and add your application registration information to your solution, you have two options: ### Opzione 1: Modalità rapidaOption 1: Express mode È possibile registrare rapidamente l'applicazione seguendo questa procedura:You can quickly register your application by doing the following: 1. Registrare l'applicazione tramite il portale di registrazione delle applicazioni MicrosoftRegister your application via the Microsoft Application Registration Portal 2. Immettere un nome per l'applicazione e l'indirizzo di posta elettronicaEnter a name for your application and your email 3. Assicurarsi che l'opzione per l'installazione guidata sia selezionataMake sure the option for Guided Setup is checked 4. Seguire le istruzioni per aggiungere un URL di reindirizzamento all'applicazioneFollow the instructions to add a Redirect URL to your application ### Opzione 2: Modalità avanzataOption 2: Advanced mode Per registrare l'applicazione e aggiungere le relative informazioni di registrazione alla soluzione, seguire questa procedura:To register your application and add your application registration information to your solution, do the following: 1. Passare al portale di registrazione delle applicazioni Microsoft per registrare un'applicazioneGo to the Microsoft Application Registration Portal to register an application 2. Immettere un nome per l'applicazione e l'indirizzo di posta elettronicaEnter a name for your application and your email 3. Assicurarsi che l'opzione per l'installazione guidata sia deselezionataMake sure the option for Guided Setup is unchecked 4. Fare clic su Add Platform, quindi selezionare WebClick Add Platform, then select Web 5. Tornare a Visual Studio e in Esplora soluzioni selezionare il progetto, quindi esaminare la finestra Proprietà (se la finestra Proprietà non è visualizzata, premere F4)Go back to Visual Studio and, in Solution Explorer, select the project and look at the Properties window (if you don’t see a Properties window, press F4) 6. Impostare il valore di SSL abilitato su TrueChange SSL Enabled to True 7. Fare clic con il pulsante destro sul progetto in Visual Studio e quindi scegliere Proprietà e la scheda Web. Nella sezione Server modificare URL progetto specificando l'URL SSL.Right click on the project in Visual Studio, then choose Properties, and the Web tab. In the Servers section change the Project Url to be the SSL URL 8. Copiare l'URL SSL e aggiungere tale URL all'elenco di URL di reindirizzamento nell'elenco corrispondente del portale di registrazione:Copy the SSL URL and add this URL to the list of Redirect URLs in the Registration Portal’s list of Redirect URLs:

Proprietà del progetto
9. Aggiungere il codice seguente in web.config, disponibile nella sezione configuration\appSettings della cartella radice:Add the following in web.config located in the root folder under the section configuration\appSettings: xml <add key="ClientId" value="Enter_the_Application_Id_here" /> <add key="redirectUri" value="Enter_the_Redirect_URL_here" /> <add key="Tenant" value="common" /> <add key="Authority" value="https://login.microsoftonline.com/{0}/v2.0" /> 10. Sostituire ClientId con l'ID applicazione appena registratoReplace ClientId with the Application ID you just registered 11. Sostituire redirectUri con l'URL SSL del progettoReplace redirectUri with the SSL URL of your project ## Testare il codiceTest your code Per eseguire test dell'applicazione in Visual Studio, premere F5 per eseguire il progetto.To test your application in Visual Studio, press F5 to run your project. Il browser viene aperto sulla posizione http://localhost:{porta} e viene visualizzato il pulsante Accedi con Microsoft.The browser opens to the http://localhost:{port} location and you see the Sign in with Microsoft button. Selezionare il pulsante per avviare il processo di accesso.Select the button to start the sign-in process. Quando si è pronti per eseguire il test, usare un account Microsoft Azure Active Directory (Azure AD) (aziendale o dell'istituto di istruzione) o un account Microsoft personale (live.com oppure outlook.com) per accedere.When you're ready to run your test, use a Microsoft Azure Active Directory (Azure AD) account (work or school account) or a personal Microsoft account (live.com or outlook.com) to sign in. Accedi con Microsoft Sign in with Microsoft

Accedere all'account MicrosoftSign in to your Microsoft account #### Visualizzare i risultati dell'applicazioneView application results Dopo l'accesso, l'utente viene reindirizzato alla home page del sito Web.After you sign in, the user is redirected to the home page of your website. La home page è l'URL HTTPS specificato nelle informazioni di registrazione dell'applicazione nel portale di registrazione delle applicazioni Microsoft.The home page is the HTTPS URL that is specified in your application registration information in the Microsoft Application Registration Portal. La home page include un messaggio di benvenuto di tipo "Hello <Utente>", un collegamento per la disconnessione e un collegamento per la visualizzazione delle attestazioni dell'utente.The home page includes a welcome message "Hello <User>," a link to sign out, and a link to view the user’s claims. Il collegamento per le attestazioni dell'utente porta al controller Attestazioni creato in precedenza.The link for the user's claims browses to the Claims controller that you created earlier. ### Esplorare per visualizzare le attestazioni dell'utenteBrowse to see the user's claims Per visualizzare le attestazioni dell'utente, selezionare il collegamento per passare alla visualizzazione dei controller disponibile solo per gli utenti autenticati.To see the user's claims, select the link to browse to the controller view that is available only to authenticated users. #### Visualizzare i risultati delle attestazioniView the claims results Dopo il passaggio alla visualizzazione dei controller, dovrebbe essere visualizzata una tabella contenente le proprietà di base per l'utente:After you browse to the controller view, you should see a table that contains the basic properties for the user: |ProprietàProperty |ValoreValue |DESCRIZIONEDescription | |---|---|---| |NomeName |Nome e cognome dell'utenteUser's full name | Nome e cognome dell'utente.The user’s first and last name. |Nome utenteUsername |utente@domain.comuser@domain.com | Nome utente usato per identificare l'utente.The username that is used to identify the user. |OggettoSubject |OggettoSubject |Stringa che identifica in modo univoco l'utente sul Web.A string that uniquely identifies the user across the web.| |ID tenantTenant ID |GuidGuid | GUID che rappresenta in modo univoco l'organizzazione di Azure AD dell'utente.A guid that uniquely represents the user’s Azure AD organization.| Dovrebbe essere visualizzata anche una tabella di tutte le attestazioni disponibili nella richiesta di autenticazione.In addition, you should see a table of all claims that are in the authentication request. Per altre informazioni, vedere l'elenco di attestazioni disponibili in un token ID di Azure AD.For more information, see the list of claims that are in an Azure AD ID Token. ### Eseguire test dell'accesso a un metodo con attributo Authorize (facoltativo)Test access to a method that has an Authorize attribute (optional) Per testare l'accesso come utente anonimo a un controller protetto con l'attributo Authorize, eseguire la procedura seguente:To test access as an anonymous user to a controller protected with the Authorize attribute, follow these steps: 1. Selezionare il collegamento per la disconnessione dell'utente e completare il processo di disconnessione.Select the link to sign out the user and complete the sign-out process. 2. Nel browser digitare http://localhost:{port}/claims per accedere al controller protetto con l'attributo Authorize.In your browser, type http://localhost:{port}/claims to access your controller that is protected with the Authorize attribute. #### Risultati previsti dopo l'accesso a un controller protettoExpected results after access to a protected controller Viene richiesta l'autenticazione per usare la visualizzazione protetta dei controller.You're prompted to authenticate to use the protected controller view. ## Advanced OptionsAdvanced options ### Proteggere l'intero sito WebProtect your entire website Per proteggere l'intero sito Web, nel file Global.asax aggiungere l'attributo AuthorizeAttribute al filtro GlobalFilters nel metodo Application_Start:To protect your entire website, in the Global.asax file, add the AuthorizeAttribute attribute to the GlobalFilters filter in the Application_Start method: csharp GlobalFilters.Filters.Add(new AuthorizeAttribute()); ### Limitare l'accesso all'applicazioneRestrict who can sign in to your application Per impostazione predefinita, quando viene compilata l'applicazione creata con la guida, questa sarà in grado di accettare accessi sia di account personali (ad esempio, outlook.com, live.com e altri) sia di account aziendali o di istituti di istruzione di proprietà di aziende od organizzazioni con Azure Active Directory integrato.By default when you build the application created by this guide, your application will accept sign-ins of personal accounts (including outlook.com, live.com, and others) as well as work and school accounts from any company or organization that has integrated with Azure Active Directory. Si tratta di un'opzione consigliata per le applicazioni SaaS.This is a recommended option for SaaS applications. Per limitare l'accesso degli utenti all'applicazione, sono disponibili diverse opzioni:To restrict user sign-in access for your application, multiple options are available: #### Opzione 1: limitare l'accesso all'applicazione solo agli utenti di una specifica istanza di Active Directory dell'organizzazione (tenant singolo)Option 1: Restrict users from only one organization's Active Directory instance to sign in to your application (single-tenant) Questa opzione è uno scenario comune per applicazioni line-of-business: se si vuole che l'applicazione accetti gli accessi solo da account appartenenti a una specifica istanza di Azure Active Directory (inclusi gli account Guestdell'istanza), procedere come segue:This option is a common scenario for LOB applications: If you want your application to accept sign-ins only from accounts that belong to a specific Azure Active Directory instance (including guest accounts of that instance) do the following: 1. Nel file web.config, modificare il valore del parametro Tenant da Common con il nome del tenant dell'organizzazione, ad esempio contoso.onmicrosoft.com.In the web.config file, change the value for the Tenant parameter from Common to the tenant name of the organization, such as contoso.onmicrosoft.com. 2. Nella classe OWIN Startup impostare l'argomento ValidateIssuer su true.In your OWIN Startup class, set the ValidateIssuer argument to true. #### Opzione 2: limitare l'accesso all'applicazione ai soli utenti contenuti in un elenco specifico di organizzazioniOption 2: Restrict access to your application to users in a specific list of organizations È possibile limitare l'accesso ai soli account utente inclusi in un'organizzazione di Azure AD che fa parte dell'elenco di organizzazioni consentite:You can restrict sign-in access to only user accounts that are in an Azure AD organization that is in the list of allowed organizations: 1. Nella classe OWIN Startup impostare l'argomento ValidateIssuer su true.In your OWIN Startup class, set the ValidateIssuer argument to true. 2. Impostare il valore del parametro ValidIssuers sull'elenco di organizzazioni consentite.Set the value of the ValidIssuers parameter to the list of allowed organizations. #### Opzione 3: usare un metodo personalizzato per convalidare le autorità di certificazioneOption 3: Use a custom method to validate issuers È possibile implementare un metodo personalizzato per convalidare le autorità di certificazione usando il parametro IssuerValidator.You can implement a custom method to validate issuers by using the IssuerValidator parameter. Per altre informazioni su come usare questo parametro, vedere TokenValidationParameters class (Classe TokenValidationParameters) su MSDN.For more information about how to use this parameter, read about the TokenValidationParameters class on MSDN. ## Guida e supportoHelp and support Se è necessaria assistenza, se si vuole segnalare un problema o si vogliono ottenere altre informazioni sulle opzioni di supporto, vedere l'articolo seguente:If you need help, want to report an issue, or want to learn more about your support options, see the following article: > [!div class="nextstepaction"] > Assistenza e supporto per gli sviluppatoriHelp and support for developers
1. Introduction] ## 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: powershell 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 siano necessarie operazioni di verifica aggiuntive.The browser then uses this cookie on subsequent requests so the user doesn't need to retype the 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. > [!TIP] > 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: csharp using Microsoft.Owin; using Owin; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Microsoft.IdentityModel.Tokens; using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; using Microsoft.Owin.Security.Notifications; 2. Sostituire la classe di avvio con il codice seguente:Replace Startup class with the code below: csharp 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 = OpenIdConnectScope.OpenIdProfile, // ResponseType is set to request the id_token - which contains basic information about the signed-in user ResponseType = OpenIdConnectResponseType.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 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. ## Aggiungere un controller per gestire le richieste di accesso e disconnessioneAdd a controller to handle sign-in and sign-out requests Questo passaggio illustra come creare un nuovo controller per esporre i metodi di accesso e disconnessione.This step shows how to create a new controller to expose sign-in and sign-out methods. 1. Fare clic con il pulsante destro del mouse sulla cartella Controllers e scegliere Add > Controller.Right click the Controllers folder and select Add > Controller 2. Selezionare MVC (.NET version) Controller – Empty.Select MVC (.NET version) Controller – Empty. 3. Fare clic su Aggiungi.Click Add 4. Assegnare il nome HomeController e fare clic su Aggiungi.Name it HomeController and click Add 5. Aggiungere i riferimenti OWIN alla classe:Add OWIN references to the class: csharp using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; 6. Aggiungere al controller i due metodi seguenti per gestire l'accesso e la disconnessione avviando una richiesta di autenticazione tramite codice:Add the two methods below to handle sign-in and sign-out to your controller by initiating an authentication challenge via code: csharp /// <summary> /// Send an OpenID Connect sign-in request. /// Alternatively, you can just decorate the SignIn method with the [Authorize] attribute /// </summary> public void SignIn() { if (!Request.IsAuthenticated) { HttpContext.GetOwinContext().Authentication.Challenge( new AuthenticationProperties{ RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); } } /// <summary> /// Send an OpenID Connect sign-out request. /// </summary> public void SignOut() { HttpContext.GetOwinContext().Authentication.SignOut( OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType); } ## Creare la home page dell'app per l'accesso degli utenti tramite un pulsante di accessoCreate the app's home page to sign in users via a sign-in button In Visual Studio creare una nuova visualizzazione per aggiungere il pulsante di accesso e mostrare le informazioni relative all'utente dopo l'autenticazione:In Visual Studio, create a new view to add the sign-in button and display user information after authentication: 1. Fare clic con il pulsante destro del mouse sulla cartella Views\Home e scegliere Add View.Right click the Views\Home folder and select Add View 2. Denominarlo Index.Name it Index. 3. Aggiungere al file il codice HTML seguente, che include il pulsante di accesso:Add the following HTML, which includes the sign-in button, to the file: html <html> <head> <meta name="viewport" content="width=device-width" /> <title>Sign in with Microsoft Guide</title> </head> <body> @if (!Request.IsAuthenticated) { <!-- If the user is not authenticated, display the sign-in button --> <a href="@Url.Action("SignIn", "Home")" style="text-decoration: none;"> <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="300px" height="50px" viewBox="0 0 3278 522" class="SignInButton"> <style type="text/css">.fil0:hover {fill: #4B4B4B;} .fnt0 {font-size: 260px;font-family: 'Segoe UI Semibold', 'Segoe UI'; text-decoration: none;}</style> <rect class="fil0" x="2" y="2" width="3174" height="517" fill="black" /> <rect x="150" y="129" width="122" height="122" fill="#F35325" /> <rect x="284" y="129" width="122" height="122" fill="#81BC06" /> <rect x="150" y="263" width="122" height="122" fill="#05A6F0" /> <rect x="284" y="263" width="122" height="122" fill="#FFBA08" /> <text x="470" y="357" fill="white" class="fnt0">Sign in with Microsoft</text> </svg> </a> } else { <span><br/>Hello @System.Security.Claims.ClaimsPrincipal.Current.FindFirst("name").Value;</span> <br /><br /> @Html.ActionLink("See Your Claims", "Index", "Claims") <br /><br /> @Html.ActionLink("Sign out", "SignOut", "Home") } @if (!string.IsNullOrWhiteSpace(Request.QueryString["errormessage"])) { <div style="background-color:red;color:white;font-weight: bold;">Error: @Request.QueryString["errormessage"]</div> } </body> </html> > ### Altre informazioniMore Information > Questa pagina aggiunge un pulsante di accesso in formato SVG con sfondo nero:This page adds a sign-in button in SVG format with a black background:
Accedi con MicrosoftSign in with Microsoft
Per altri pulsanti di accesso, vedere questa pagina.For more sign-in buttons, please go to the this page. ## Aggiungere un controller per visualizzare le attestazioni dell'utenteAdd a controller to display user's claims Questo controller illustra gli usi dell'attributo [Authorize] per la protezione di un controller.This controller demonstrates the uses of the [Authorize] attribute to protect a controller. Questo attributo limita l'accesso al controller ai soli utenti autenticati.This attribute restricts access to the controller by only allowing authenticated users. Il codice seguente usa l'attributo per visualizzare le attestazioni utente recuperate durante l'accesso.The code below makes use of the attribute to display user claims that were retrieved as part of the sign-in. 1. Fare clic con il pulsante destro del mouse sulla cartella Controllers e scegliere Add > Controller.Right click the Controllers folder: Add > Controller 2. Selezionare MVC {version} Controller – Empty.Select MVC {version} Controller – Empty. 3. Fare clic su Aggiungi.Click Add 4. Assegnare il nome ClaimsController.Name it ClaimsController 5. Sostituire il codice della classe controller con il codice seguente, che aggiunge l'attributo [Authorize] alla classe:Replace the code of your controller class with the code below - this adds the [Authorize] attribute to the class: csharp [Authorize] public class ClaimsController : Controller { /// <summary> /// Add user's claims to viewbag /// </summary> /// <returns></returns> public ActionResult Index() { var userClaims = User.Identity as System.Security.Claims.ClaimsIdentity; //You get the user’s first and last name below: ViewBag.Name = userClaims?.FindFirst("name")?.Value; // The 'preferred_username' claim can be used for showing the username ViewBag.Username = userClaims?.FindFirst("preferred_username")?.Value; // The subject/ NameIdentifier claim can be used to uniquely identify the user across the web ViewBag.Subject = userClaims?.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value; // TenantId is the unique Tenant Id - which represents an organization in Azure AD ViewBag.TenantId = userClaims?.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid")?.Value; return View(); } } > ### Altre informazioniMore Information > A causa dell'uso dell'attributo [Authorize], tutti i metodi di questo controller possono essere eseguiti solo se l'utente è autenticato.Because of the use of the [Authorize] attribute, all methods of this controller can only be executed if the user is authenticated. Se un utente non autenticato prova ad accedere al controller, OWIN avvierà una richiesta di autenticazione e imporrà all'utente di autenticarsi.If the user is not authenticated and tries to access the controller, OWIN will initiate an authentication challenge and force the user to authenticate. Il codice riportato sopra cerca nell'elenco di attestazioni attributi utente specifici inclusi nel token ID dell'utente.The code above looks at the list of claims for specific user attributes included in the user’s Id token. Tali attributi includono nome e cognome, nome utente e soggetto ID utente globale dell'utente.These attributes include the user’s full name and username, as well as the global user identifier subject. Contengono anche l'ID tenant, che rappresenta l'ID dell'organizzazione dell'utente.It also contains the Tenant ID, which represents the ID for the user’s organization. ## Creare una visualizzazione per mostrare le attestazioni dell'utenteCreate a view to display the user's claims In Visual Studio creare una nuova visualizzazione per mostrare le attestazioni dell'utente in una pagina Web:In Visual Studio, create a new view to display the user's claims in a web page: 1. Fare clic con il pulsante destro del mouse sulla cartella Views\Claims e scegliere Add View.Right click the Views\Claims folder and: Add View 2. Denominarlo Index.Name it Index. 3. Aggiungere il codice HTML seguente al file:Add the following HTML to the file: html <html> <head> <meta name="viewport" content="width=device-width" /> <title>Sign in with Microsoft Sample</title> <link href="@Url.Content("~/Content/bootstrap.min.css")" rel="stylesheet" type="text/css" /> </head> <body style="padding:50px"> <h3>Main Claims:</h3> <table class="table table-striped table-bordered table-hover"> <tr><td>Name</td><td>@ViewBag.Name</td></tr> <tr><td>Username</td><td>@ViewBag.Username</td></tr> <tr><td>Subject</td><td>@ViewBag.Subject</td></tr> <tr><td>TenantId</td><td>@ViewBag.TenantId</td></tr> </table> <br /> <h3>All Claims:</h3> <table class="table table-striped table-bordered table-hover table-condensed"> @foreach (var claim in System.Security.Claims.ClaimsPrincipal.Current.Claims) { <tr><td>@claim.Type</td><td>@claim.Value</td></tr> } </table> <br /> <br /> @Html.ActionLink("Sign out", "SignOut", "Home", null, new { @class = "btn btn-primary" }) </body> </html> ## Registrare l'applicazioneRegister your application Per registrare l'applicazione e aggiungere le relative informazioni di registrazione alla soluzione, sono possibili due opzioni:To register your application and add your application registration information to your solution, you have two options: ### Opzione 1: Modalità rapidaOption 1: Express mode È possibile registrare rapidamente l'applicazione seguendo questa procedura:You can quickly register your application by doing the following: 1. Registrare l'applicazione tramite il portale di registrazione delle applicazioni MicrosoftRegister your application via the Microsoft Application Registration Portal 2. Immettere un nome per l'applicazione e l'indirizzo di posta elettronicaEnter a name for your application and your email 3. Assicurarsi che l'opzione per l'installazione guidata sia selezionataMake sure the option for Guided Setup is checked 4. Seguire le istruzioni per aggiungere un URL di reindirizzamento all'applicazioneFollow the instructions to add a Redirect URL to your application ### Opzione 2: Modalità avanzataOption 2: Advanced mode Per registrare l'applicazione e aggiungere le relative informazioni di registrazione alla soluzione, seguire questa procedura:To register your application and add your application registration information to your solution, do the following: 1. Passare al portale di registrazione delle applicazioni Microsoft per registrare un'applicazioneGo to the Microsoft Application Registration Portal to register an application 2. Immettere un nome per l'applicazione e l'indirizzo di posta elettronicaEnter a name for your application and your email 3. Assicurarsi che l'opzione per l'installazione guidata sia deselezionataMake sure the option for Guided Setup is unchecked 4. Fare clic su Add Platform, quindi selezionare WebClick Add Platform, then select Web 5. Tornare a Visual Studio e in Esplora soluzioni selezionare il progetto, quindi esaminare la finestra Proprietà (se la finestra Proprietà non è visualizzata, premere F4)Go back to Visual Studio and, in Solution Explorer, select the project and look at the Properties window (if you don’t see a Properties window, press F4) 6. Impostare il valore di SSL abilitato su TrueChange SSL Enabled to True 7. Fare clic con il pulsante destro sul progetto in Visual Studio e quindi scegliere Proprietà e la scheda Web. Nella sezione Server modificare URL progetto specificando l'URL SSL.Right click on the project in Visual Studio, then choose Properties, and the Web tab. In the Servers section change the Project Url to be the SSL URL 8. Copiare l'URL SSL e aggiungere tale URL all'elenco di URL di reindirizzamento nell'elenco corrispondente del portale di registrazione:Copy the SSL URL and add this URL to the list of Redirect URLs in the Registration Portal’s list of Redirect URLs:

Proprietà del progetto
9. Aggiungere il codice seguente in web.config, disponibile nella sezione configuration\appSettings della cartella radice:Add the following in web.config located in the root folder under the section configuration\appSettings: xml <add key="ClientId" value="Enter_the_Application_Id_here" /> <add key="redirectUri" value="Enter_the_Redirect_URL_here" /> <add key="Tenant" value="common" /> <add key="Authority" value="https://login.microsoftonline.com/{0}/v2.0" /> 10. Sostituire ClientId con l'ID applicazione appena registratoReplace ClientId with the Application ID you just registered 11. Sostituire redirectUri con l'URL SSL del progettoReplace redirectUri with the SSL URL of your project ## Testare il codiceTest your code Per eseguire test dell'applicazione in Visual Studio, premere F5 per eseguire il progetto.To test your application in Visual Studio, press F5 to run your project. Il browser viene aperto sulla posizione http://localhost:{porta} e viene visualizzato il pulsante Accedi con Microsoft.The browser opens to the http://localhost:{port} location and you see the Sign in with Microsoft button. Selezionare il pulsante per avviare il processo di accesso.Select the button to start the sign-in process. Quando si è pronti per eseguire il test, usare un account Microsoft Azure Active Directory (Azure AD) (aziendale o dell'istituto di istruzione) o un account Microsoft personale (live.com oppure outlook.com) per accedere.When you're ready to run your test, use a Microsoft Azure Active Directory (Azure AD) account (work or school account) or a personal Microsoft account (live.com or outlook.com) to sign in. Accedi con Microsoft Sign in with Microsoft

Accedere all'account MicrosoftSign in to your Microsoft account #### Visualizzare i risultati dell'applicazioneView application results Dopo l'accesso, l'utente viene reindirizzato alla home page del sito Web.After you sign in, the user is redirected to the home page of your website. La home page è l'URL HTTPS specificato nelle informazioni di registrazione dell'applicazione nel portale di registrazione delle applicazioni Microsoft.The home page is the HTTPS URL that is specified in your application registration information in the Microsoft Application Registration Portal. La home page include un messaggio di benvenuto di tipo "Hello <Utente>", un collegamento per la disconnessione e un collegamento per la visualizzazione delle attestazioni dell'utente.The home page includes a welcome message "Hello <User>," a link to sign out, and a link to view the user’s claims. Il collegamento per le attestazioni dell'utente porta al controller Attestazioni creato in precedenza.The link for the user's claims browses to the Claims controller that you created earlier. ### Esplorare per visualizzare le attestazioni dell'utenteBrowse to see the user's claims Per visualizzare le attestazioni dell'utente, selezionare il collegamento per passare alla visualizzazione dei controller disponibile solo per gli utenti autenticati.To see the user's claims, select the link to browse to the controller view that is available only to authenticated users. #### Visualizzare i risultati delle attestazioniView the claims results Dopo il passaggio alla visualizzazione dei controller, dovrebbe essere visualizzata una tabella contenente le proprietà di base per l'utente:After you browse to the controller view, you should see a table that contains the basic properties for the user: |ProprietàProperty |ValoreValue |DESCRIZIONEDescription | |---|---|---| |NomeName |Nome e cognome dell'utenteUser's full name | Nome e cognome dell'utente.The user’s first and last name. |Nome utenteUsername |utente@domain.comuser@domain.com | Nome utente usato per identificare l'utente.The username that is used to identify the user. |OggettoSubject |OggettoSubject |Stringa che identifica in modo univoco l'utente sul Web.A string that uniquely identifies the user across the web.| |ID tenantTenant ID |GuidGuid | GUID che rappresenta in modo univoco l'organizzazione di Azure AD dell'utente.A guid that uniquely represents the user’s Azure AD organization.| Dovrebbe essere visualizzata anche una tabella di tutte le attestazioni disponibili nella richiesta di autenticazione.In addition, you should see a table of all claims that are in the authentication request. Per altre informazioni, vedere l'elenco di attestazioni disponibili in un token ID di Azure AD.For more information, see the list of claims that are in an Azure AD ID Token. ### Eseguire test dell'accesso a un metodo con attributo Authorize (facoltativo)Test access to a method that has an Authorize attribute (optional) Per testare l'accesso come utente anonimo a un controller protetto con l'attributo Authorize, eseguire la procedura seguente:To test access as an anonymous user to a controller protected with the Authorize attribute, follow these steps: 1. Selezionare il collegamento per la disconnessione dell'utente e completare il processo di disconnessione.Select the link to sign out the user and complete the sign-out process. 2. Nel browser digitare http://localhost:{port}/claims per accedere al controller protetto con l'attributo Authorize.In your browser, type http://localhost:{port}/claims to access your controller that is protected with the Authorize attribute. #### Risultati previsti dopo l'accesso a un controller protettoExpected results after access to a protected controller Viene richiesta l'autenticazione per usare la visualizzazione protetta dei controller.You're prompted to authenticate to use the protected controller view. ## Advanced OptionsAdvanced options ### Proteggere l'intero sito WebProtect your entire website Per proteggere l'intero sito Web, nel file Global.asax aggiungere l'attributo AuthorizeAttribute al filtro GlobalFilters nel metodo Application_Start:To protect your entire website, in the Global.asax file, add the AuthorizeAttribute attribute to the GlobalFilters filter in the Application_Start method: csharp GlobalFilters.Filters.Add(new AuthorizeAttribute()); ### Limitare l'accesso all'applicazioneRestrict who can sign in to your application Per impostazione predefinita, quando viene compilata l'applicazione creata con la guida, questa sarà in grado di accettare accessi sia di account personali (ad esempio, outlook.com, live.com e altri) sia di account aziendali o di istituti di istruzione di proprietà di aziende od organizzazioni con Azure Active Directory integrato.By default when you build the application created by this guide, your application will accept sign-ins of personal accounts (including outlook.com, live.com, and others) as well as work and school accounts from any company or organization that has integrated with Azure Active Directory. Si tratta di un'opzione consigliata per le applicazioni SaaS.This is a recommended option for SaaS applications. Per limitare l'accesso degli utenti all'applicazione, sono disponibili diverse opzioni:To restrict user sign-in access for your application, multiple options are available: #### Opzione 1: limitare l'accesso all'applicazione solo agli utenti di una specifica istanza di Active Directory dell'organizzazione (tenant singolo)Option 1: Restrict users from only one organization's Active Directory instance to sign in to your application (single-tenant) Questa opzione è uno scenario comune per applicazioni line-of-business: se si vuole che l'applicazione accetti gli accessi solo da account appartenenti a una specifica istanza di Azure Active Directory (inclusi gli account Guestdell'istanza), procedere come segue:This option is a common scenario for LOB applications: If you want your application to accept sign-ins only from accounts that belong to a specific Azure Active Directory instance (including guest accounts of that instance) do the following: 1. Nel file web.config, modificare il valore del parametro Tenant da Common con il nome del tenant dell'organizzazione, ad esempio contoso.onmicrosoft.com.In the web.config file, change the value for the Tenant parameter from Common to the tenant name of the organization, such as contoso.onmicrosoft.com. 2. Nella classe OWIN Startup impostare l'argomento ValidateIssuer su true.In your OWIN Startup class, set the ValidateIssuer argument to true. #### Opzione 2: limitare l'accesso all'applicazione ai soli utenti contenuti in un elenco specifico di organizzazioniOption 2: Restrict access to your application to users in a specific list of organizations È possibile limitare l'accesso ai soli account utente inclusi in un'organizzazione di Azure AD che fa parte dell'elenco di organizzazioni consentite:You can restrict sign-in access to only user accounts that are in an Azure AD organization that is in the list of allowed organizations: 1. Nella classe OWIN Startup impostare l'argomento ValidateIssuer su true.In your OWIN Startup class, set the ValidateIssuer argument to true. 2. Impostare il valore del parametro ValidIssuers sull'elenco di organizzazioni consentite.Set the value of the ValidIssuers parameter to the list of allowed organizations. #### Opzione 3: usare un metodo personalizzato per convalidare le autorità di certificazioneOption 3: Use a custom method to validate issuers È possibile implementare un metodo personalizzato per convalidare le autorità di certificazione usando il parametro IssuerValidator.You can implement a custom method to validate issuers by using the IssuerValidator parameter. Per altre informazioni su come usare questo parametro, vedere TokenValidationParameters class (Classe TokenValidationParameters) su MSDN.For more information about how to use this parameter, read about the TokenValidationParameters class on MSDN. ## Guida e supportoHelp and support Se è necessaria assistenza, se si vuole segnalare un problema o si vogliono ottenere altre informazioni sulle opzioni di supporto, vedere l'articolo seguente:If you need help, want to report an issue, or want to learn more about your support options, see the following article: > [!div class="nextstepaction"] > Assistenza e supporto per gli sviluppatoriHelp and support for developers