Apa yang terjadi dengan proyek MVC saya (layanan tersambung Visual Studio Azure Active Directory)?

Berlaku untuk:yesVisual Studio noVisual Studio untuk Mac noVisual Studio Code

Artikel ini mengidentifikasi perubahan pasti yang dilakukan pada proyek ASP.NET MVC saat menambahkan layanan yang tersambung Azure Active Directory yang menggunakan Visual Studio.

Untuk informasi tentang bekerja dengan layanan tersambung, lihat Memulai.

Menambahkan referensi

Mempengaruhi file proyek (referensi .NET) dan packages.config (referensi NuGet).

Jenis Referensi
.NET; NuGet Microsoft.IdentityModel.Protocol.Extensions
.NET; NuGet Microsoft.Owin
.NET; NuGet Microsoft.Owin.Host.SystemWeb
.NET; NuGet Microsoft.Owin.Security
.NET; NuGet Microsoft.Owin.Security.Cookies
.NET; NuGet Microsoft.Owin.Security.OpenIdConnect
.NET; NuGet Owin
.NET System.IdentityModel
.NET; NuGet System.IdentityModel.Tokens.Jwt
.NET System.Runtime.Serialization

Referensi tambahan jika Anda memilih opsi Baca data direktori:

Jenis Referensi
.NET; NuGet EntityFramework
.NET EntityFramework.SqlServer (hanya Visual Studio 2015)
.NET; NuGet Microsoft.Azure.ActiveDirectory.GraphClient
.NET; NuGet Microsoft.Data.Edm
.NET; NuGet Microsoft.Data.OData
.NET; NuGet Microsoft.Data.Services.Client
.NET; NuGet Microsoft.IdentityModel.Clients.ActiveDirectory
.NET Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms (khusus Visual Studio 2015)
.NET; NuGet System.Spatial

Referensi berikut dihapus (hanya proyek ASP.NET 4, seperti di Visual Studio 2015):

Jenis Referensi
.NET; NuGet Microsoft.AspNet.Identity.Core
.NET; NuGet Microsoft.AspNet.Identity.EntityFramework
.NET; NuGet Microsoft.AspNet.Identity.Owin

Perubahan file proyek

  • Atur properti IISExpressSSLPort ke angka berbeda.
  • Atur properti WebProject_DirectoryAccessLevelKey ke 0, atau 1 jika Anda memilih opsi Baca data direktori.
  • Atur properti IISUrl ke https://localhost:<port>/ dengan <port> yang cocok dengan nilai IISExpressSSLPort.

Perubahan web.config or app.config

  • Menambahkan entri konfigurasi berikut:

    <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>
    
  • Menambahkan elemen <dependentAssembly> di bawah simpul <runtime><assemblyBinding>untuk System.IdentityModel.Tokens.Jwt dan Microsoft.IdentityModel.Protocol.Extensions.

Perubahan tambahan jika Anda memilih opsi Baca data direktori:

  • Menambahkan entri konfigurasi berikut ini di bawah <appSettings>:

    <add key="ida:ClientSecret" value="<Azure AD app's new client secret>" />
    
  • Menambahkan elemen berikut di bawah <configuration>; nilai untuk project-mdf-file dan project-catalog-id akan bervariasi:

    <configSections>
      <!-- For more information on Entity Framework configuration, visit https://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>
    
  • Menambahkan elemen <dependentAssembly> di bawah simpul <runtime><assemblyBinding>untuk Microsoft.Data.Services.Client, Microsoft.Data.Edm, dan Microsoft.Data.OData.

Perubahan dan penambahan kode

  • Menambahkan atribut [Authorize] ke Controllers/HomeController.cs dan pengontrol lain yang ada.

  • Menambahkan kelas permulaan autentikasi, App_Start/Startup.Auth.cs, yang berisi logika permulaan untuk autentikasi Azure AD. Jika Anda memilih opsi Baca data direktori, file ini juga berisi kode untuk menerima kode OAuth dan menukarnya dengan token akses.

  • Menambahkan kelas pengontrol, Controllers/AccountController.cs, yang berisi metode SignIn dan SignOut.

  • Menambahkan tampilan parsial, Views/Shared/_LoginPartial.cshtml, yang berisi link tindakan untuk SignIn dan SignOut.

  • Menambahkan tampilan parsial, Views/Account/SignoutCallback.cshtml, yang berisi HTML untuk UI keluar.

  • Memperbarui Startup.Configuration metode untuk menyertakan panggilan ke ConfigureAuth(app) jika kelas sudah ada; jika tidak, menambahkan kelas Startup yang menyertakan metode panggilan.

  • Menambahkan Connected Services/AzureAD/ConnectedService.json (Visual Studio 2017) atau Service References/Azure AD/ConnectedService.json (Visual Studio 2015), yang berisi informasi yang digunakan Visual Studio untuk melacak penambahan layanan yang tersambung.

  • Jika Anda memilih opsi Baca data direktori, menambahkan Models/ADALTokenCache.cs dan Models/ApplicationDbContext.cs untuk mendukung cache token. Juga menambahkan pengontrol dan tampilan tambahan untuk mengilustrasikan pengaksesan informasi profil pengguna menggunakan API grafik Azure: Controllers/UserProfileController.cs, Views/UserProfile/Index.cshtml, dan Views/UserProfile/Relogin.cshtml

Pencadangan file (Visual Studio 2015)

Saat menambahkan layanan tersambung, Visual Studio 2015 mencadangkan file yang diubah dan dihapus. Semua file yang terpengaruh disimpan di folder Backup/AzureAD. Visual Studio 2017 dan yang lebih baru tidak membuat cadangan.

  • 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

Perubahan pada Azure

  • Membuat Azure AD Application di domain yang Anda pilih saat menambahkan layanan tersambung.
  • Memperbarui aplikasi untuk menyertakan izin Baca data direktori jika opsi tersebut dipilih.

Pelajari lebih lanjut tentang Azure Active Directory.

Langkah berikutnya