Cosa è successo a un progetto MVC (servizio connesso a Visual Studio Azure Active Directory)?What happened to my MVC project (Visual Studio Azure Active Directory connected service)?

Questo articolo identifica le modifiche esatte apportate a un progetto MVC ASP.NET quando si aggiunge il servizio connesso Azure Active Directory tramite Visual Studio.This article identifies the exact changes made to am ASP.NET MVC project when adding the Azure Active Directory connected service using Visual Studio.

Per informazioni sull'uso del servizio connesso, vedere l'introduzione.For information on working with the connected service, see Getting Started.

Riferimenti aggiuntiAdded references

Interessa il file di progetto (riferimenti *.NET) e packages.config (riferimenti NuGet).Affects the project file *.NET references) and packages.config (NuGet references).

typeType RiferimentiReference
.NET; NuGet.NET; NuGet Microsoft.IdentityModel.Protocol.ExtensionsMicrosoft.IdentityModel.Protocol.Extensions
.NET; NuGet.NET; NuGet Microsoft.OwinMicrosoft.Owin
.NET; NuGet.NET; NuGet Microsoft.Owin.Host.SystemWebMicrosoft.Owin.Host.SystemWeb
.NET; NuGet.NET; NuGet Microsoft.Owin.SecurityMicrosoft.Owin.Security
.NET; NuGet.NET; NuGet Microsoft.Owin.Security.CookiesMicrosoft.Owin.Security.Cookies
.NET; NuGet.NET; NuGet Microsoft.Owin.Security.OpenIdConnectMicrosoft.Owin.Security.OpenIdConnect
.NET; NuGet.NET; NuGet OwinOwin
.NET.NET System.IdentityModelSystem.IdentityModel
.NET; NuGet.NET; NuGet System.IdentityModel.Tokens.JwtSystem.IdentityModel.Tokens.Jwt
.NET.NET System.Runtime.SerializationSystem.Runtime.Serialization

Riferimenti aggiuntivi se è stata selezionata l'opzione Lettura dati directory:Additional references if you selected the Read directory data option:

typeType RiferimentiReference
.NET; NuGet.NET; NuGet EntityFrameworkEntityFramework
.NET.NET EntityFramework.SqlServer (solo Visual Studio 2015)EntityFramework.SqlServer (Visual Studio 2015 only)
.NET; NuGet.NET; NuGet Microsoft.Azure.ActiveDirectory.GraphClientMicrosoft.Azure.ActiveDirectory.GraphClient
.NET; NuGet.NET; NuGet Microsoft.Data.EdmMicrosoft.Data.Edm
.NET; NuGet.NET; NuGet Microsoft.Data.ODataMicrosoft.Data.OData
.NET; NuGet.NET; NuGet Microsoft.Data.Services.ClientMicrosoft.Data.Services.Client
.NET; NuGet.NET; NuGet Microsoft.IdentityModel.Clients.ActiveDirectoryMicrosoft.IdentityModel.Clients.ActiveDirectory
.NET.NET Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms (solo Visual Studio 2015)Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms (Visual Studio 2015 only)
.NET; NuGet.NET; NuGet System.SpatialSystem.Spatial

I seguenti riferimenti vengono rimossi (solo 4 progetti ASP.NET, come in Visual Studio 2015):The following references are removed (ASP.NET 4 projects only, as in Visual Studio 2015):

typeType riferimentoReference
.NET; NuGet.NET; NuGet Microsoft.AspNet.Identity.CoreMicrosoft.AspNet.Identity.Core
.NET; NuGet.NET; NuGet Microsoft.AspNet.Identity.EntityFrameworkMicrosoft.AspNet.Identity.EntityFramework
.NET; NuGet.NET; NuGet Microsoft.AspNet.Identity.OwinMicrosoft.AspNet.Identity.Owin

Modifiche al file di progettoProject file changes

  • Impostare la proprietà IISExpressSSLPort su un numero distinto.Set the property IISExpressSSLPort to a distinct number.
  • Impostare la proprietà WebProject_DirectoryAccessLevelKey su 0 o 1 se è stata selezionata l'opzione Lettura dati directory.Set the property WebProject_DirectoryAccessLevelKey to 0, or 1 if you selected the Read directory data option.
  • Impostare la proprietà IISUrl su https://localhost:<port>/ dove <port> corrisponde al valore IISExpressSSLPort.Set the property IISUrl to https://localhost:<port>/ where <port> matches the IISExpressSSLPort value.

modifiche apportate al file web.config o app.configweb.config or app.config changes

  • Sono state aggiunte le seguenti voci di configurazione:Added the following configuration entries:

    <appSettings>
        <add key="ida:ClientId" value="<ClientId from the new Azure AD app>" />
        <add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
        <add key="ida:Domain" value="<your selected Azure domain>" />
        <add key="ida:TenantId" value="<the Id of your selected Azure AD tenant>" />
        <add key="ida:PostLogoutRedirectUri" value="<project start page, such as https://localhost:44335>" />
    </appSettings>
    
  • Sono stati aggiunti elementi <dependentAssembly> nel nodo <runtime><assemblyBinding> per System.IdentityModel.Tokens.Jwt e Microsoft.IdentityModel.Protocol.Extensions.Added <dependentAssembly> elements under the <runtime><assemblyBinding> node for System.IdentityModel.Tokens.Jwt and Microsoft.IdentityModel.Protocol.Extensions.

Modifiche aggiuntive se è stata selezionata l'opzione Lettura dati directory:Additional changes if you selected the Read directory data option:

  • È stata aggiunta la seguente voce di configurazione in <appSettings>:Added the following configuration entry under <appSettings>:

    <add key="ida:ClientSecret" value="<Azure AD app's new client secret>" />
    
  • Sono stati aggiunti gli elementi seguenti in <configuration>; i valori per project-mdf-file e project-catalog-id variano:Added the following elements under <configuration>; values for the project-mdf-file and project-catalog-id will vary:

    <configSections>
      <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </configSections>
    
    <connectionStrings>
      <add name="DefaultConnection" connectionString="Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\<project-mdf-file>.mdf;Initial Catalog=<project-catalog-id>;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
    
    <entityFramework>
      <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
          <parameter value="mssqllocaldb" />
        </parameters>
      </defaultConnectionFactory>
      <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
    </entityFramework>
    
  • Sono stati aggiunti elementi <dependentAssembly> nel nodo <runtime><assemblyBinding> per Microsoft.Data.Services.Client, Microsoft.Data.Edm e Microsoft.Data.OData.Added <dependentAssembly> elements under the <runtime><assemblyBinding> node for Microsoft.Data.Services.Client, Microsoft.Data.Edm, and Microsoft.Data.OData.

Aggiunte e modifiche al codiceCode changes and additions

  • È stato aggiunto l'attributo [Authorize] a Controllers/HomeController.cs e ad altri controller esistenti.Added the [Authorize] attribute to Controllers/HomeController.cs and any other existing controllers.

  • È stata aggiunta una classe di avvio dell'autenticazione denominata App_Start/Startup.Auth.cs, contenente la logica di avvio per l'autenticazione di Azure AD.Added an authentication startup class, App_Start/Startup.Auth.cs, containing startup logic for Azure AD authentication. Se è stata selezionata l'opzione Lettura dati directory, questo file contiene anche il codice per ricevere un codice OAuth scambiarlo con un token di accesso.If you selected the Read directory data option, this file also contains code to receive an OAuth code and exchange it for an access token.

  • È stata aggiunta una classe controller denominata Controllers/AccountController.cs, contenente i metodi SignIn e SignOut.Added a controller class, Controllers/AccountController.cs, containing SignIn and SignOut methods.

  • È stata aggiunta una visualizzazione parziale denominata Views/Shared/_LoginPartial.cshtml, contenente un collegamento all'azione per SignIn e SignOut.Added a partial view, Views/Shared/_LoginPartial.cshtml, containing an action link for SignIn and SignOut.

  • È stata aggiunta una visualizzazione parziale denominata Views/Account/SignoutCallback.cshtml, contenente codice HTML per l'interfaccia utente di disconnessione.Added a partial view, Views/Account/SignoutCallback.cshtml, containing HTML for sign-out UI.

  • È stato aggiornato il metodo Startup.Configuration per includere una chiamata a ConfigureAuth(app) se la classe esiste già. In caso contrario, è stata aggiunta una classe Startup che chiama il metodo.Updated the Startup.Configuration method to include a call to ConfigureAuth(app) if the class already existed; otherwise added a Startup class that includes calls the method.

  • È stato aggiunto Connected Services/AzureAD/ConnectedService.json (Visual Studio 2017) o Service References/Azure AD/ConnectedService.json (Visual Studio 2015), contenente le informazioni usate da Visual Studio per tenere traccia dell'aggiunta del servizio connesso.Added Connected Services/AzureAD/ConnectedService.json (Visual Studio 2017) or Service References/Azure AD/ConnectedService.json (Visual Studio 2015), containing information that Visual Studio uses to track the addition of the connected service.

  • Se è stata selezionata l'opzione Lettura dati directory, sono stati aggiunti Models/ADALTokenCache.cs e Models/ApplicationDbContext.cs per supportare la memorizzazione nella cache dei token.If you selected the Read directory data option, added Models/ADALTokenCache.cs and Models/ApplicationDbContext.cs to support token caching. Sono stati aggiunti anche un altro controller e una visualizzazione per illustrare l'accesso alle informazioni relative al profilo utente tramite le API Graph di Azure: Controllers/UserProfileController.cs, Views/UserProfile/Index.cshtml e Views/UserProfile/Relogin.cshtmlAlso added an additional controller and view to illustrate accessing user profile information using Azure graph APIs: Controllers/UserProfileController.cs, Views/UserProfile/Index.cshtml, and Views/UserProfile/Relogin.cshtml

Backup di file (Visual Studio 2015)File backup (Visual Studio 2015)

Quando si aggiunge il servizio connesso, Visual Studio 2015 esegue il backup dei file modificati e rimossi.When adding the connected service, Visual Studio 2015 backs up changed and removed files. Tutti i file interessati vengono salvati nella cartella Backup/AzureAD.All affected files are saved in the folder Backup/AzureAD. Visual Studio 2017 non crea backup.Visual Studio 2017 does not create backups.

  • Startup.cs
  • App_Start\IdentityConfig.cs
  • App_Start\Startup.Auth.cs
  • Controllers\AccountController.cs
  • Controllers\ManageController.cs
  • Models\IdentityModels.cs
  • Models\ManageViewModels.cs
  • Views\Shared\_LoginPartial.cshtml

Modifiche in AzureChanges on Azure

  • È stata creata un'applicazione Azure AD nel dominio selezionato durante l'aggiunta del servizio connesso.Created an Azure AD Application in the domain that you selected when adding the connected service.
  • È stata aggiornata l'app per includere l'autorizzazione Lettura dati directory se è stata selezionata l'opzione corrispondente.Updated the app to include the Read directory data permission if that option was selected.

Altre informazioni su Azure Active Directory.Learn more about Azure Active Directory.

Passaggi successiviNext steps