Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

ตั้งค่า Kerberos Authentication บน IIS Website

คู่มือขั้นตอนการตั้งค่า SSO (Single Sign-On) แบบโปร่งใส ด้วย Kerberos Domain User Authentication บน IIS Website ที่รันบน Windows Server 2012 R2

ขั้นตอนการตั้งค่า

  1. เปิด IIS Manager → เลือก Website → Authentication ปิด Anonymous Authentication เปิด Windows Authentication (IIS ลอง Anonymous ก่อนเสมอ)
  2. เปิด Providers ของ Windows Authentication ค่าเริ่มต้นมี 2 ตัว: Negotiate และ NTLM Negotiate เป็น Container ใช้ Kerberos ก่อน หากล้มเหลวค่อย fallback ไป NTLM Negotiate ต้องอยู่ลำดับแรก
  3. ลงทะเบียน Service Principal Name (SPN) สำหรับชื่อ Website ที่ User จะเข้าถึง
    • ถ้า Website ใช้ชื่อ Server จริง (https://server-name) ไม่ต้องสร้าง SPN เพิ่ม (มีอยู่ใน Computer Account ใน AD แล้ว)
    • ถ้า Website ใช้ชื่ออื่น หรือเป็น Web Farm Load Balancing → ต้องสร้าง SPN เพิ่ม ผูกกับ Service Account

ตัวอย่างสร้าง SPN สำหรับ Web Farm

  1. สร้าง Domain Account: iis_service ตรวจสอบว่า servicePrincipalName ว่าง
  2. Website ต้องตอบสนองที่ https://webportal และ https://webportal.adatum.loc เพิ่ม SPN:
    Setspn /s HTTP/webportal adatum\iis_service
    Setspn /s HTTP/webportal.adatum.loc adatum\iis_service
  3. ตรวจสอบ: setspn /l iis_service ตรวจสอบ Duplicate SPN: setspn –x

ตั้งค่า Application Pool

  1. เลือก Application Pool ของ Website (เช่น DefaultAppPool) → Advanced Settings → Identity
  2. เปลี่ยนจาก ApplicationPoolIdentity เป็น adatum\iis_service
  3. ไปที่ Website → Configuration Editor → system.webServer > security > authentication > windowsAuthentication
  4. เปลี่ยน useAppPoolCredentials = True (อนุญาต IIS ใช้ Domain Account ถอดรหัส Kerberos Tickets)
  5. Reset IIS: iisreset

ตั้งค่าเดียวกันบน Web Farm Servers ทุกตัว

ทดสอบ Kerberos Authentication

เปิด https://webportal.adatum.loc ใน Browser Client Note: ใน IE11 อาจต้องเพิ่ม Address ใน Trusted Sites และตั้ง Automatic logon with current user name and password

ตรวจสอบว่าใช้ Kerberos จริงด้วย Fiddler: ดู HTTP Traffic หา Header Authorization Header (Negotiate) appears to contain a Kerberos ticket