Konfigurasi ADFS (Active Directory Federation Services) Windows Server 2019



Active Directory Federation Services (ADFS) adalah komponen perangkat lunak yang dikembangkan oleh Microsoft yang dapat diinstal pada sistem operasi Windows Server untuk memberikan pengguna akses masuk tunggal ke sistem dan aplikasi yang terletak melintasi batas organisasi. Ini menggunakan model otorisasi kontrol akses berbasis klaim untuk menjaga keamanan aplikasi dan mengimplementasikan identitas gabungan.

Otentikasi berbasis klaim adalah proses otentikasi pengguna berdasarkan serangkaian klaim tentang identitasnya yang terkandung dalam token tepercaya.

Di ADFS, federasi identitas dibentuk antara dua organisasi dengan membangun kepercayaan antara dua bidang keamanan. Server federasi di satu sisi (sisi Akun) mengautentikasi pengguna melalui cara standar dalam Layanan Domain Direktori Aktif dan kemudian mengeluarkan token yang berisi serangkaian klaim tentang pengguna, termasuk identitasnya. Di sisi lain, sisi Sumber Daya, server federasi lain memvalidasi token dan mengeluarkan token lain untuk server lokal untuk menerima identitas yang diklaim. Ini memungkinkan suatu sistem untuk menyediakan akses terkontrol ke sumber daya atau layanannya kepada pengguna yang termasuk dalam bidang keamanan lain tanpa mengharuskan pengguna untuk mengotentikasi langsung ke sistem dan tanpa dua sistem yang berbagi database identitas pengguna atau kata sandi. Dalam praktiknya pendekatan ini biasanya dirasakan oleh pengguna sebagai berikut:
  1. Pengguna login ke PC lokal mereka (seperti biasanya ketika mulai bekerja di pagi hari)
  2. Pengguna perlu mendapatkan informasi di situs web ekstranet perusahaan mitra - misalnya untuk mendapatkan harga atau detail produk
  3. Pengguna menavigasi ke situs ekstranet perusahaan mitra - misalnya: http://example.com
  4. Situs web mitra sekarang tidak memerlukan kata sandi apa pun untuk diketikkan - sebagai gantinya, kredensial pengguna diteruskan ke situs ekstranet mitra menggunakan AD FS
  5. Pengguna sekarang masuk ke situs web mitra dan dapat berinteraksi dengan situs web 'masuk'

Untuk penempatan di lingkungan, Microsoft merekomendasikan topologi penyebaran standar yang terdiri dari satu atau lebih server AD FS di jaringan perusahaan Internal, dengan satu atau lebih server Web Application Proxy (WAP) di EKSTRANET atau jaringan ekstranet. Pada setiap lapisan, AD FS dan WAP, penyeimbang beban perangkat keras atau lunak ditempatkan di depan server server dan menangani perutean lalu lintas. Firewall ditempatkan sebagaimana diharuskan di depan alamat IP eksternal penyeimbang beban di depan setiap lahan (FS dan proxy).

Dalam kasus saya, saya akan menggunakan intranet sebagai Domain Controller dan untuk Proxy Aplikasi Web di ekstranet, lalu LON-SRV1 Join DC yang terdapat di LON-DC1 serta LON-SRV2 pula. Jadi nanti di LON-SRV1 tepatnya server ADFS, kita menggunakan sertifikat jenis Extended Key Usage dan juga nanti di LON-SRV2 Yaitu tepatnya server untuk Web Application saya sudah menyediakan aplkasi webnya, jadi bahan yang di perlukan bisa download disini


Apa itu Layanan Federasi Direktori Aktif (AD FS) juga dikenal sebagai SAML / Layanan Federasi / SSO. Ini menyediakan Web sistem masuk tunggal (SSO) untuk mengautentikasi pengguna ke beberapa aplikasi Web sambil memanfaatkan satu akun yang membuat pengguna akhir lebih mudah pada saat itu untuk masuk ke aplikasi berbasis cloud HR mereka dll. ADFS juga memfasilitasi Azure AD Menghubungkan penyebaran untuk penyebaran dan integrasi Office 365 dan Azure.

Sekaranng Posisi kita di LON-SRV2 , Disini kita akan membuat New Self Signed Certificate , jadi apa itu ? Dalam kriptografi dan keamanan komputer , sertifikat yang ditandatangani sendiri adalah sertifikat yang tidak ditandatangani oleh otoritas sertifikat (CA). Sertifikat ini mudah dibuat dan tidak memerlukan biaya. Namun, mereka tidak menyediakan semua properti keamanan yang ditandatangani oleh CA bertujuan untuk menyediakan. Misalnya, ketika pemilik situs web menggunakan sertifikat yang ditandatangani sendiri untuk menyediakan layanan HTTPS , orang yang mengunjungi situs web itu akan melihat peringatan di browser mereka. Pengunjung situs web yang mengabaikan peringatan semacam itu terekspos pada risiko bahwa pihak ketiga dapat mencegat lalu lintas ke situs web menggunakan sertifikat yang ditandatangani sendiri oleh pihak ketiga. Ini adalah jenis serangan man-in-the-middle (MitM), dan memungkinkan pihak ketiga untuk membaca dan memodifikasi semua data yang dikirim ke atau dari situs web oleh pengguna target. jadi disini intinya kita membuat Sertifikat baru , disini kita buat dengan powershell, dengan perintah 

New-SelfSigned Certificate -DnsName "(nama umum sertifikat)" -CertStoreLocation "(lokasi ingin disimpan sertifikat)"
Untuk Melihat Kira kira sertifikat kita tersimpan atau tidak, bisa di lihat di mmc jadi saya menyimpannya di penyimpanan default CA yaitu localmachine
Disini akan menunujukkan jendela baru konsol, disitu kita menambahkan fitur snap CA nantinya, pergi ke tab File > Add/Remove Snap-in... atau bisa juga dengan menekan tombol ctrl + M 
Kita tambahkan Certificates 
Kita menambahkannya di Computer Account
Lalu pilih Local Computer dan Finish
Jika melihat di Ceritificates > Personal > Certificates maka disitu ada sebuah certificate yang tadi dibuat 
Lalu Setalah itu tujuan kita selanjutnya ialah Mengekspor sertifikat lon-srv2 dimana Publik key nya nanti akan di import di trusted root CA server lon-srv2 & lon-srv1 agar bisa terpecaya, Klik kanan pada sertifikat lalu klik export..
Lalu Klik Next
 Disini kita hanya membutuhkan Pubkeynya saja tidak private keynya...
 Kita pilih format .cer dengan DER Encoded
Pilih Lokasi ingin di ekspor, Secara default di Document lalu tentukan namanya, sebagai contoh ialah lon-srv2-pub.cer bahwasnnya ini ialah pubkeynya lon-srv2 
Finish!
Selanjutnya agar Root Certificate lon-srv2 dipercayai oleh mesinnya sendiri, kita import pubkeynya tersebut. pergi ke tab Trusted Root Certification Authorities > Certificates > Import 
 Pilih Next
 Tentunkan/Arahkan tempat pubkey yang tersimpan sebelumnnya
Lalu Pilih Place all certificates in the following store bahwannya disitu kita akan menyimpannya secara default di Trusted Root Certificate Authorities 
 Finish 
Maka Otomatis Pubkey certificate yang dibuat secara lokal di lon-srv2 sudah bisa dipercaya...
Posisi kita saat ini ada di LON-SRV1. Sekarang, Saatnya Kita membuat Sertifikat jenis EKU (Extended Key Usage) lalu apa itu?  Extended Key Usage merupakan perluasan dari key usage, dimana kehadirannya adalah untuk menyempurnakan key usage. Extended Key Usage ini bisa bersifat critical atau non-critical. Jika extensi yang berada pada Extended Key Usage kalian tetapkan sebagai critical, sertifikat wajib digunakan hanya untuk tujuan tersebut. Jika sertifikat itu digunakan untuk tujuan lain, maka hal tersebut akan melanggar kebijakan CA (CA Policy). Jika extensinya non-critical, hal tersebut mengindikasikan tujuan dari key tersebut, tapi tidak menyiratkan bahwa CA membatasi penggunaan key itu hanya untuk tujuan tersebut. Meskipun demikian, aplikasi yang menggunakan sertifikatnya mungkin membutuhkan tujuan tertentu sehingga sertifikat dapat diterima. Jika sebuah sertifikat itu critical, baik pada Key Usage dan juga Extended Key Usage, kedua field tersebut haruslah diproses secara mandiri, dan sertifikat digunakan hanya untuk tujuan yang konsisten dari 2 fields itu saja. Jika tidak ada tujuan yang konsisten untuk kedua fields tersebut, sertifikat tidak boleh digunakan untuk tujuan apapun. Nah Jika belum paham bisa nyari referensi lain :D , tetapi untuk saat ini kita import file .ps1 untuk bisa mengenerate sertifikat jenis EKU , Bisa download di pembahasan utama, dibagian bahan bahan yang diperlukan, pergi ke direktori penyimpanan file .ps1 lalu masukkan perintah 

Import-Module .\New-SelfSignedCertificateEx.ps1
Kita buat sertifikat baru dengan jenis extended key usage jika kalian belum mengimport bahan yang diperlukan, maka tidak bisa menggunakan fitur Generate sertifikat jenis EKU ini.

New-SelfsignedCertificateEx -Subject "CN=(Nama Umum sertifikat)" -EKU "(Jenis EKU)" -KeyUsage "(Jenis Key)" -AllowSMIME -Path (Lokasi tempat simpat sertifikat [nama file]) -Password (ConvertTo-SecureString "(Password untuk keamanan sertifikat ketika di import)" -AsPlainText -Force) -Exportable
Saya Menyimpannya di lokal disk C
Lokasi kita masih di LON-SRV1 Disini kita import sertifikatnya yang tadi sudah di buat
 Pilih Sertifikat Jenis EKU yang tadi sudah dibuat.
Masukkan Password yang tadi sudah ditentukan di pembuatan sertifikat tadi, jadi disini kita mengimport sertifikat Public serta Privatenya
Kita akan simpan secara default di certificate personal pilih yang kedua
Jika sudah diimport ke lokal mesin, sekarang saatnya eksport Pubkeynya
Disini kita tidak mengekspor private keynya tetapi Public Keynya
Sama seperti sebelumnnya pilih ekstensi .cer dengan encode DER
Tentukan nama dan Tempat tersimpannya file Ekspor ini, saya simpan di lokal disk C
Ekspor berhasil
Lalu import Pubkeynya di Trusted Root Certification Authorites 
Pastikan sudah ada sertifikat pubkeynya agar dipercayai oleh mesinnya sendiri
Sekarang Saatnya kita membuat sharing folder, dimana sharing folder ini berisi Pubkey si lon-srv1 nanti lon-srv2 mengambilnya, lalu mengimportnya sama seperti sebelumnnya, jadi tujuan kita ialah agar mempercayai satu sama lain sertifikat mesin yang dibuat.
Sekarang posisi kita di LON-SRV2 Kita ambil dan import pubkey milik LON-SRV1 

Kita Import saja pubkey milik lon-srv1 di lon-srv2
Sekarang Sebaliknya sama seperti yang dilakukan di lon-srv1 sekarang posisi kita di lon-srv2 disini buatlah share folder dan disini kita import nantinya pubkey milik lon-srv2 di lon-srv1 serta import kedua pubkeynya di LON-CL1 
Sekarang posisi kita di Client tepatnya di LON-CL1 disini kita ambil pubkey milik lon-srv1 dan lon-srv2 
Lalu Import keduanya
Sekarang kita cek di DNS manager LON-DC1  Ketika LON-SRV1 Dan LON-SRV2 Sudah join domain controller milik lon-dc1 otomatis subdomain nama host akan terbuat di dns lon-dc1 yaitu mylab.local 
Sekarang Posisi Kita ada di LON-SRV2 Disini sebelum  kita menginstall Web App, terlebih dahulu kita menginstall fitur Web Server IIS yang diperlukan untuk web application, bisa melalui GUI Mode menambahkan fiturnya, tapi untuk kali ini. saya menggunakan powershell scripting dengan perintah 

Install-Windows-Feature Web-server, Web-App-Dev, Web-Net-Ext45, Web-Asp-Net45, Web-Mgmt-Tools, web-Mgmt-Console, Net-Framework-45-Features, NET-Framework-45-Core,NET-Framework-45-ASPNET
Selesai...
Pergi ke Tools > Web Server IIS disini Kita Binding web server default ke DNS lon-srv2.mylab.local 
Add, Lalu jangan arahkan IP Address tetapi cukup arahkan ke tipe HTTPS serta port 443 lalu untuk hostname arahkan ke dns lon-srv2.mylab.local dimana dns ini terbuat sendiri ketika join DC lalu pilih sertifikat lon-srv2 yang dibuat di awal waktu tadi.
Agar bisa, Diakses secara Default web server HTTPS kita non aktifkan IE Enhanced Security Configuration

Akses di browser untuk pengujian https://lon-srv2.mylab.local 
Sekarang posisi kita di LON-SRV1 Untuk Web Server sudah dibangun di LON-SRV2 Sekarang kita setup dulu ADFSnya, kita tambahkan fiturnya dan centang Active Directory Federation Services 
Jika Proses Instalasi sudah selesai, klik Configurasi the federation service on this server untuk melengkapi konfigurasi
Disini kita pilih Create the first federation server in a federation server farm jadi intinya kita membuat pertama kali server federasi
Disini Kita menggunakan Account Default Administrator LON-DC1 Yaitu server yang sebagai ADDS 
Lalu untuk SSL Certificate pilih sertifikat jenis EKU yang dibuat di lon-srv1, disitu juga secara otomatis nama ssl certificate akan menjadi nama federasi service , Untuk Display name saya tentunkan Catur Global Corp
Sebelumnnya kita balik lagi ke LON-DC1 Disini kita menentukan user baru untuk service adfs server kita nantinya,  jadi user active directory ini sebagai akun service federasi di LON-SRV1 
Saya membuat akun dengan username ADFS
 Tentunkan Passwordnnya
Balik lagi ke LON-SRV1 disitu kita tentukan dan gunakan user yang ada di active directory, pilih user ADFS dan tentukan password usernya
Selanjutnya, Membuat database, disini kita diberi dua pilihan, bisa menggunakan database bawaan yaitu WID atau menggunakan SQL Disini kita menggunakan yang bawaan saja.
Inilah jika kita menginstall dan mensetup ADFS melalui Powershell
Jika persyaratan dan bahan bahan sudah terpenuhi maka akan bertanda ceklish, Klik Configure 
Sama seperti sebelumnnya agar Web Server bisa di akses di lon-srv1 maka nonaktifkan IE Enhanced Security Configuration 
Sekarang kita menambahkan ADFS Management di konsol mmc  
Inilah Tampilan Awal ADFS Management
Lalu sekarang kita membutuhkan bahan yang kedua, yaitu Web Applicationnya. Pastikan kalian sudah download , sudah saya cantumkan di bagian pertama link google drivenya. lalu ekstrak filenya pindahkan ke desktop
Lalu didalem folder SampApp and Rules ada dua file zip lagi, itu SampApp dan SampAppRules
Ekstrak File SampApp lalu pindahkan foldernya ke C:\inetpub\wwwroot 
Didalam folder SampApp ada file web.config disitu kita edit filenya. menggunakan notepad
Tapi Sebelum mengedit, kita balik lagi ke LON-SRV1 Disitu kita Copy Thumbprint Sertifikat LON-SRV1 
Setelah itu kita balik lagi ke LON-SRV2 Disitu edit file web.config dan cari kata setiap kata thumb dan ubah setiap thumbprint yang menggunakan thumbprint Sertifikat LON-SRV1

Setelah itu ubah semua sts.contoso.com dan replace semua menggunakan lon-srv1.mylab.local dimana DNS ini ialah DNS ADFS server lon-srv1
Setelah itu ubah app1.contoso.com dab replace menggunakan lon-srv2.mylab.local dimana DNS ini ialah DNS yaitu yang digunakan untuk web server
Lalu buatlah lah file sharing untuk mengshare SampAppRules yang akan dipindahkan ke  LON-SRV1 Yaitu service ADFS
Saya sudah menkstrak dan saya memindahkan 2 filenya ke local disk C
Balik lagi ke LON-SRV2 Ubah metadata xml web appnya agar terintergrasi dengan dns lon-srv2.mylab.local 
Lalu posisi kita sekarang ialah di LON-SRV1 disini kita bisa menambahkan Relying party trust 2 File tadi bisa  menggunakan GUI atau CLI mode, itu tergantung kita saya mencoba menggunakan powershell scripting dengan perintah

Add-AdfsRelyingPartyTrust -Name "Sample Claims Aware Applications" -IssuanceAuthorizationRulesFile (File Authorization Rules) -IssuanceTransforRulesFile (File Transform Rules) -MetadataUrl https://lon-srv2.mylab.local/sampapp/federationmetadata/2007-06/federationmetada.xml

Jadi intinya kita disini menambahkan relying party trust  yaitu authorization serta transform ke file xml web application yang ada di LON-SRV2 Secara remote atau lebih tepatnya secara jarak jauh. 
Untuk Memastikan kita cek di bagian Relying Party Trust , jika sudah sampai tahap ini artinya. web application yang ada di LON-SRV2 Sudah diklaim atau dipercaya di ADFS Server milik LON-SRV1 
Sekarang saatnya path SamApp kita jadikan aplikasi web secara utuh, tapi sebelumnnya kita pergi ke Application Pools di LON-SRV2 Dan pilih DefaultAppPool lalu Advanced Settings 
Dibagian Load User Profile kita ubah menjadi True 
Lalu kita langsung saja jadikan path SamApp menjadi aplikasi web utuh, klik kanan lalu pilih convert to Application 
Pilih Application Pool menjadi DefaultAppPool 
Dan Tara... Sekarang Path SampApp secara default menjadi aplikasi web secara utuh
Lakukan Pengujian, Sekarang kita ke LON-CL1 Dan akses https://lon-srv2.mylab.local/sampapp  
Agar tidak muncul permintaan otentikasi, kita ke LON-SRV1 di ADFS Management lalu di Authentication Methods untuk koneksi Extranet dan intranet kita ubah metode otentikasinya
Hanya Aktifkan Forms Authentication 
Akses lagi di LON-CL1 ke https://lon-srv2.mylab.local/sampapp maka otomatis akan terredirect ke https://lon-srv1.mylab.local 
Kita Login Menggunakan User Administrator Active Directory

Ya Sekian dari saya, Semoga Bermanfaat. Tunggu tutorial Lanjutan mengenai ADFS lagi. 
Click here to Download