Aspnet core menyediakan template bawaan yang sudah lengkap dimana terdapat konfigurasi dasar MVC dan beberapa setting route untuk mapping request yang datang dari user dan menyalurkannya ke controller.
Melanjutkan tulisan sebelumnya belajar aspnet core MVC. Pada tulisan ini saya akan jelaskan bagaimana menggunakan aspnet core MVC cookie authentication dengan memanfaatkan database yang sudah ada. Pada umumnya developer atau user yang ingin mengadopsi asp.net core mvc sudah memiliki database user dan role. Entah itu dari active directory atau ada aplikasi lain yang sudah menyimpan informasi user (username, password) dan role (autorisasi).
ASP.net Identity
Asp.net core mempunyai fitur kemanan bawaan dari microsoft. Fitur itu adalah Identity. ASP .Net Identity datang dengan beberapa fitur standard, termasuk konfigurasi skema autentikasi, external login yang menggunakan Facebook, Twitter, Google, Microsoft dsb. Aspnet Identity mendukung openid spesifikasi yang bisa dikonfigurasi sesuai keinginan dan kebutuhan masing organisasi.
Jika aplikasi web kita memiliki client mobile app, dan mobile app ini harus terautentikasi untuk mengakses web service maka aspnet Identity bisa di-extend untuk menggunakan oauth2 bearer token autentikasi dengan format Token Jwt. Client app akan mengirim web request pada endpoint tertentu yang disetting untuk melakukan autentikasi dan mendapatkan token, selanjutnya token ini harus dimasukkan ke semua http header pada saat client tsb ingin mengirim request ke web service.
Pada tulisan ini saya tidak membahas aspnet Identity, karena rumit dan banyak standard keamanan yang harus dijelaskan detail jika ingin betul – betul mempelajari asp.net Identity. Mungkin akan saya bahas pada tulisan -tulisan berikutnya.
Untuk saat ini saya hanya menjelaskan bagaimana memanfaatkan cookie autentikasi menggunakan custom database/ existing database yang dibuat sendiri.
Skenario autentikasi menggunakan existing database.
Seumpamanya, kita sudah memiliki database yang di dalamnya terdapat tabel user, role, user_role dan tabel obat. Dan kita ingin membuat aplikasi web menggunakan asp.net core MVC. Untuk memanfaatkan tabel-tabel di atas dalam memvalidasi user yang login dan memberikan role yang sesuai dengan data di database, kita bisa set sendiri url form login, nama cookie yang dipakai dan berapa lama cookie tsb akan expire.
Clone source code dari tulisan sebelumnya, asp.net core. Dan buka file Startup.cs, cari method ConfigureServices dan edit isinya seperti gambar di bawah. Kemudia edit method Configure.
Yang saya lakukan di atas adalah, menambahkan middleware pada asp.net core untuk menggunakan autentikasi dengan mekanisme cookie dengan men-setting login (Loginpath), logout (Logoutpath), access denied url (AccessDeniedPath), cookie timeout (ExpireTimeSpan), pengaturan timeout berjangka (SlidingExpiration). Pastikan code yang dimasukkan di file Startup.cs berurutan sesuai gambar, karena asp.net core akan menambahkan middleware mengikuti urutan code dalam Startup.cs.
Membuat controller dan view untuk LoginPath,LogoutPath
Pada folder Controllers, buat file baru SecurityController.cs. SecurityController akan menghandle flow Login, AccesDenied dan Logout. Selanjutnya buat class baru dengan nama yang sesuai dengan nama file, mengikuti rule convention MVC. Tambahkan method baru Denied dan Login, sesuai gambar dibawah.
Setelah itu buat folder baru dibawah folder Views, dan beri nama Security kemudian buatkan 2 file baru masing- masign Denied.cshtml dan Login.cshtml. Login.cshtml akan menerima input user dan password dari user, file inilah yang didalmnya terdapat form login berisi text dan password input. Pada state ini aplikasi sudah bisa dijalankan untuk mencoba menampilkan form login, pada VSCode tekan F5 untuk memulai proses Debuging. Buka browser favorit anda dan buka url http://localhost:5000/Security/Login untuk melihat halaman login.
Sampai disini dulu tutorialnya, artikelnya sudah terlalu panjang. Part 2 akan menjelaskan cara melakukan Signin dan melakukan autentikasi.
full source code di sini.
2 thoughts on “asp.net core MVC login menggunakan custom database. Part-1”