Migrasi Autentikasi Dari Windows Authentication Ke Azure AD (Asp.Net MVC)

Indraga Martiyana Duha
ecomindo-dev
Published in
3 min readMay 19, 2021
Windows authentication to Azure AD (draw.io)

Ketika melakukan migrasi aplikasi dari on-premise ke cloud, seringkali autentikasi yang dipakai di on-premise tidak bisa dipakai atau tidak kompatibel ketika aplikasi telah dipindah ke cloud. Dalam artikel ini akan dibahas salah satu cara untuk mengubah autentikasi pada aplikasi existing yang menggunakan windows authentication menjadi menggunakan Azure Active Directory.

Beberapa keuntungan menggunakan autentikasi Azure AD diantaranya:

Untuk dapat mengimplementasi langkah-langkah yang nanti akan dilakukan, ada beberapa requirement yang harus dipenuhi.

  • Memiliki akun Azure yang aktif.
  • Aplikasi menggunakan .Net Framework 4.5.0 ++.
  • Visual Studio 2019.

Kondisi Existing Aplikasi

Dalam artikel ini kita akan mengambil contoh kasus, sebuah aplikasi web dibangun menggunakan .Net 4.5.2. Aplikasi ini adalah sebuah aplikasi yang berjalan di on-premise. Dan direncanakan akan dipindahkan ke cloud, akan tetapi terdapat sebuah masalah, yaitu aplikasi yang sekarang menggunakan windows authentication yang tidak disupport di cloud environment yang akan digunakan.

Adapun autentikasi pada aplikasi yang sekarang seperti berikut:

  1. Aplikasi mendapatkan windows name
  2. Aplikasi melakukan request untuk mendapatkan userinfo dari DB User berdasarkan windows name
  3. Aplikasi melakukan set session berdasarkan userinfo yang telah didapatkan dari User DB
  4. Apabila userinfo gagal didapatkan maka aplikasi akan menampilkan error page

Kode untuk autentikasi dan set session bisa dilihat dalam Global.asax.cs berikut ini:

Konfigurasi Autentikasi Azure AD

Ada beberapa langkah supaya aplikasi dapat menggunakan autentikasi Azure AD, disini kita akan bagi menjadi 2 bagian yaitu konfigurasi di azure dengan app registration dan konfigurasi dari sisi aplikasi.

App Registration Azure

  1. Masuk ke Azure Portal.
  2. Cari dan pilih Azure Active Directory.
  3. Pilih App registrations > New registration.
  4. Masukkan nama aplikasi misalkan Sample App.
  5. Tambahkan Url aplikasi pada input Redirect URI dan klik register.
  6. Catat atau copy bagian application id dan tenant id.
  7. Pada menu Manage pilih Authentication.
  8. Pada bagian Implicit grant and hybrid flows section, cek ID tokens. Kemudian klik Save.

Konfigurasi Aplikasi/Source Code

  1. Pastikan kita sudah melakukan App Registration dan telah memiliki application id dan tenant id.
  2. Edit Web.config dan tambahkan beberapa parameter seperti di bawah ini pada bagian appSettings. Dan ubah parameter client id dan tenant dengan nilai telah didapatkan dari App Registration. Ubah juga redirectUri dengan url aplikasi.
<appSettings>
....
<add key="ClientId" value="Enter_the_Application_Id_here" />
<add key="Tenant" value="Enter_the_Tenant_Info_Here" />
<add key="Authority" value="https://login.microsoftonline.com/{0}/v2.0" />
<add key="redirectUri" value="https://localhost:44368/" />
</appSettings>

3. Install beberapa package yang diperlukan yaitu Open ID Connect dengan OWIN middleware yang dapat dilakukan melalui package manager console di visual studio.

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

4. Tambahkan file Startup.cs di root folder source code aplikasi, yang isinya seperti berikut.

5. Ubah file Global.asax.cs pada method Application_PreRequestHandlerExecute, menjadi seperti berikut.

6. Tambahkan annotation [Authorize] ke Controller yang membutuhkan autentikasi, misalkan

[Authorize]
public class HomeController: Controller
{
...
}

7. Ubah data username di database dengan menggunakan email Azure AD.

Setelah itu, ketika aplikasi dijalankan pertama kali akan di redirect ke halaman login microsoft dan setelah mengisi credential dan login. Maka akan di redirect ke aplikasi dengan identitas dari user AD dan aplikasi bisa digunakan seperti biasa.

Demikian artikel mengenai migrasi autentikasi ke azure AD. Semoga bermanfaat.

--

--