Memuat keseimbangan webapps dengan otentikasi IIS NTLM dan ASP.NET Impersonation

DIPOSTING OLEH Zevenet | 2 Agustus 2018

Perusahaan

Server web Microsoft, Internet Information Services (IIS), mengintegrasikan beberapa mekanisme otentikasi untuk memvalidasi pengguna terhadap Active Directory atau sistem yang berdiri sendiri (otentikasi berbasis LDAP). NTLM adalah protokol otentikasi Windows Challenge / Response yang dapat digunakan di jaringan dan aplikasi yang dapat digunakan di kedua lingkungan.

Dua skenario yang berbeda dapat dipertimbangkan: Otentikasi NTLM interaktif adalah gabungan dari dua sistem, klien dan pengontrol domain yang digunakan untuk menyimpan data pengguna yang diperlukan untuk melayani otentikasi, dan Otentikasi NTLM non-interaktif melibatkan tiga sistem berbeda klien, server aplikasi dan domain untuk memungkinkan pengguna untuk mengakses sumber daya tertentu dalam aplikasi.

Peniruan ASP.NET izin untuk aplikasi web untuk mengotentikasi dan mengotorisasi pengguna yang mengandalkan Microsoft IIS.

Pada artikel ini kami akan menjelaskan cara memuat aplikasi keseimbangan yang mengintegrasikan protokol NTLM untuk skenario otentikasi pengguna non-interaktif.

Bagaimana cara kerja NTLM?

Protokol NTLM bergantung pada protokol HTTP / S di mana klien yang diberikan memulai jabat tangan dari total langkah 6 untuk membangun sesi yang diautentikasi.

Jabat tangan sesi yang diautentikasi memerlukan langkah-langkah berikut:

1. Klien memulai permintaan anonim dari sumber daya tertentu ke server web.

GET / HTTP

2. Server merespons dengan pesan yang tidak diotorisasi dan metode otentikasi yang harus digunakan klien.

401 Unauthorized
WWW-Authenticate: NTLM

3. Klien mengirim ulang permintaan termasuk tantangan otentikasi format NTLM.

GET / HTTP
Authorization: NTLM <base64-encoded first NTLM message>

4. Server merespons dengan pesan yang tidak diotorisasi dan meminta informasi lebih lanjut kepada klien.

401 Unauthorized
WWW-Authenticate: NTLM <base64-encoded second NTLM message>

5. Klien mengirim ulang permintaan termasuk sisa informasi sesi.

GET / HTTP
Authorization: NTLM <base64-encoded third NTLM message>

6. Server terhubung dengan pengontrol domain untuk menyelesaikan permintaan otentikasi dan kemudian mengkonfirmasi ke klien otentikasi.

HTTP 200 OK

Perhatikan bahwa jabat tangan ini diperlukan di setiap koneksi baru, bukan permintaan HTTP, dan selama langkah 3 hingga 6, koneksi harus dijaga. Jika koneksi ditutup, bagian jabat tangan ini harus diulang dan tidak valid untuk hanya mengulang dari langkah 5. Di sisi lain, setelah koneksi diautentikasi, header Otorisasi tidak perlu dikirim lagi saat koneksi tidak ditutup secara independen dari sumber daya yang diakses.

Bagaimana cara memuat aplikasi web yang seimbang menggunakan otentikasi NTLM?

Dengan Zevenet, ada 2 cara utama untuk memuat keseimbangan dan membangun aplikasi web berbasis NTLM dalam ketersediaan tinggi, dengan penyeimbang beban lapisan 4 TCP sederhana atau dengan proxy lapisan 7 untuk fitur-fitur canggih.

Penyeimbangan beban NTLM sederhana pada layer 4

Untuk memuat aplikasi web keseimbangan dengan dukungan otentikasi NTLM dengan konfigurasi sederhana, kita dapat membuat pertanian berbasis LSLB dengan profil L4xNAT. Kita dapat menggunakan protokol HTTP atau HTTPS.

Kemudian, dalam konfigurasi global memastikan bahwa protokol yang digunakan adalah TCP tapi kita bisa pilih NAT or DNAT sesuai dengan topologi yang diperlukan.

Dalam majalah Layanan bagian, diperlukan untuk mengatur persistensi untuk memastikan bahwa otentikasi untuk klien tertentu selalu menuju ke backend yang sama, jika tidak, otentikasi koneksi tidak dapat dilakukan.

Terakhir, tambahkan daftar backend Anda dan konfigurasikan pemeriksaan kesehatan seperti yang ditunjukkan pada bagian di bawah ini.

Penyeimbangan beban NTLM pada layer 7

Opsi ini memungkinkan untuk menangani data HTTP / S dengan dukungan NTLM dengan proxy lapisan 7 yang dikonfigurasi melalui modul LSLB dan HTTP farm. Untuk ini, kita perlu membuat kebun untuk HTTP atau HTTPS sesuai dengan persyaratan SSL untuk layanan virtual. Satu-satunya perbedaan adalah Pendengar dikonfigurasi dalam Pengaturan global pertanian dibuat.

Pada lapisan ini, karena aplikasi belum dapat membuat cookie sesi apa pun untuk membuat persistensi atau pinning koneksi, kita dapat menggunakan Penyisipan Cookie opsi yang memungkinkan penyeimbang beban untuk membuat cookie baru selama jabat tangan awal otentikasi NTLM.

Terakhir, tambahkan daftar backend Anda dan konfigurasikan pemeriksaan kesehatan seperti yang ditunjukkan pada bagian di bawah ini. Anda dapat mengonfigurasi opsi aplikasi tambahan di tingkat proksi yang termasuk dalam jenis pertanian ini dan dukungan NTLM tidak akan terpengaruh.

Pemeriksaan kesehatan tingkat lanjut untuk situs web otentikasi NTLM

Untuk membuat health check lanjutan kustom kami untuk aplikasi yang diautentikasi NTLM, kami telah membuatnya di bawah jalur / usr / local / zevenet / app / libexec skrip untuk memeriksa backend seperti yang ditunjukkan di bawah ini. Sebagai contoh, check_ntlm.sh dengan izin yang sesuai.

#!/bin/bash

# get input parameters
BACKEND=$1
PORT=$2
USER=$3
PASS=$4
URI=$5
STRING=$6

/usr/bin/curl http://${BACKEND}:${PORT}${URI} --ntlm -negotiate -u ${USER}:${PASS} 2>/dev/null | grep "${STRING}" &>/dev/null

if [ $? == 0 ]
then
	# if the curl command doesn't fail then notify that the backend is up
	echo "Server ${BACKEND}:${PORT} OK"
	exit 0
fi

# if the the curl command fails then notify that the backend is down
echo "Server ${BACKEND}:${PORT} is not OK"
exit 1

Dalam majalah Pemantauan >> Farmguardian bagian, jika berlaku, atau menambahkannya ke perintah untuk memeriksa di layanan pertanian.

Kami dapat menguji skrip pemeriksaan kesehatan dengan menjalankan:

/usr/local/zevenet/app/libexec/check_ntlm.sh 192.168.0.99 80 johndoe johnsecret "/my/uri" "DOCTYPE html"

Mengetahui bahwa IP backend adalah 192.168.0.99 pelabuhannya 80 HTTP, johndoe adalah pengguna tiruan di domain kami, johnsecret adalah kata sandi dummy, “/ My / uri” adalah URI untuk memeriksa dan “DOCTYPE html” adalah string untuk menemukan dalam data respons saat permintaan berhasil.

Kami menyarankan untuk membuat pengguna tiruan yang dapat masuk di domain tetapi tanpa izin, untuk memasukkannya dalam pemeriksaan kesehatan layanan kami. Itulah alasan menggunakan file johndoe pengguna dummy di pemeriksaan kesehatan khusus kami.

Ketika pemeriksaan kesehatan kami diuji dari baris perintah dan siap, kami dapat menugaskannya ke peternakan yang dikonfigurasi dengan dukungan NTLM.

Nikmati aplikasi web NTLM seimbang Anda!

Bagikan ke:

Dokumentasi di bawah ketentuan Lisensi Dokumentasi Bebas GNU.

Apakah artikel ini berguna?

Artikel terkait