ค้นหาเว็บไซต์

การกำหนดค่าการรับรองความถูกต้อง Kerberos บนเว็บไซต์ IIS


ต่อไปนี้คือคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีกำหนดค่าการตรวจสอบสิทธิ์ผู้ใช้โดเมน Kerberos แบบโปร่งใส SSO (Single Sign-On) บนเว็บไซต์ IIS ที่ใช้ Windows Server 2012 R2

เริ่ม IIS Manager บนเว็บเซิร์ฟเวอร์ของคุณ เลือกเว็บไซต์ที่จำเป็นและไปที่ส่วน การรับรองความถูกต้อง อย่างที่คุณเห็น เฉพาะ การตรวจสอบสิทธิ์แบบไม่เปิดเผยตัวตน เท่านั้นที่เปิดใช้งานตามค่าเริ่มต้น ปิดใช้งานและเปิดใช้งานการรับรองความถูกต้องของ Windows (ก่อนอื่น IIS จะพยายามดำเนินการตรวจสอบสิทธิ์แบบไม่ระบุชื่อเสมอ)

เปิดรายชื่อผู้ให้บริการสำหรับการรับรองความถูกต้องของ Windows (ผู้ให้บริการ) โดยค่าเริ่มต้น จะมีผู้ให้บริการสองราย: Negotiate และ NTLM Negotiate เป็นคอนเทนเนอร์ที่ใช้ Kerberos เป็นวิธีการตรวจสอบสิทธิ์วิธีแรก และหากการตรวจสอบสิทธิ์ล้มเหลว ระบบจะใช้ NTLM การเจรจาต่อรอง ต้องมาก่อนในรายชื่อผู้ให้บริการ

ขั้นตอนต่อไปรวมถึงการลงทะเบียนรายการ ชื่อหลักบริการ (SPN) สำหรับชื่อของเว็บไซต์ ซึ่งผู้ใช้จะเข้าถึงได้ หากเว็บไซต์ IIS ต้องใช้งานได้โดยใช้ชื่อของเซิร์ฟเวอร์เท่านั้น ซึ่งเว็บไซต์นั้นตั้งอยู่ (http://server-name หรือ http://server-name.adatum. loc) คุณไม่จำเป็นต้องสร้างรายการ SPN เพิ่มเติม (รายการ SPN มีอยู่แล้วในบัญชีเซิร์ฟเวอร์ใน AD) หากที่อยู่เว็บไซต์แตกต่างจากชื่อโฮสต์หรือหากคุณกำลังสร้างเว็บฟาร์มที่มีการจัดสรรภาระงาน คุณจะต้องเชื่อมต่อรายการ SPN เพิ่มเติมกับเซิร์ฟเวอร์หรือบัญชีผู้ใช้

สมมติว่าเรามีฟาร์มของเซิร์ฟเวอร์ IIS ในกรณีนี้ คุณควรสร้างบัญชี AD แยกต่างหากและผูกรายการ SPN กับบัญชีนั้น Application Pool เป้าหมายของเว็บไซต์ของเราจะเริ่มต้นจากบัญชีนี้

สร้างบัญชีโดเมน iis_service ตรวจสอบให้แน่ใจว่าไม่ได้กำหนดรายการ SPN สำหรับวัตถุนี้ (แอตทริบิวต์ servicePrincipalName ว่างเปล่า)

สมมติว่าเว็บไซต์ต้องตอบสนองที่ http://webportal และ http://webportal.adatum.loc เราต้องระบุที่อยู่เหล่านี้ในแอตทริบิวต์ SPN ของบัญชีบริการ

Setspn /s HTTP/webportal adatum\iis_service
Setspn /s HTTP/webportal.adatum.loc adatum\iis_service

ดังนั้นเราจึงอนุญาตให้บัญชีนี้ถอดรหัสตั๋ว Kerberos เมื่อผู้ใช้เข้าถึงที่อยู่เหล่านี้ และตรวจสอบสิทธิ์เซสชัน

คุณสามารถตรวจสอบการตั้งค่า SPN ของบัญชีได้ดังนี้:

setspn /l iis_service

เคล็ดลับ Kerberos จะทำงานไม่ถูกต้องหากใช้ SPN เดียวกันโดยรายการโดเมนต่างๆ ใช้คำสั่งต่อไปนี้ ตรวจสอบให้แน่ใจว่าไม่มี SPN ที่ซ้ำกันในโดเมน:

setspn -x

ขั้นตอนต่อไปคือการกำหนดค่า IIS Application Pool เพื่อเปิดใช้งานจากบัญชีที่สร้างขึ้นก่อนหน้านี้

เลือก Application Pool ของเว็บไซต์ของคุณ (ในตัวอย่างของเรา คือ DefaultAppPool)

เปิด การตั้งค่าขั้นสูง และไปที่ ข้อมูลประจำตัว

เปลี่ยนจาก ApplicationPoolIdentity เป็น adatum\iis_service

จากนั้นไปที่เว็บไซต์ของคุณในตัวจัดการ IIS และเลือก ตัวแก้ไขการกำหนดค่า

ในเมนูแบบเลื่อนลง เลือก system.webServer > ความปลอดภัย > การรับรองความถูกต้อง > windowsAuthentication

เปลี่ยน useAppPoolCredentials เป็น จริง

ดังนั้นเราจึงอนุญาตให้ IIS ใช้บัญชีโดเมนเพื่อถอดรหัสตั๋ว Kerberos จากลูกค้า

รีเซ็ต IIS โดยใช้คำสั่งนี้:

iisreset

จะต้องกำหนดค่าเดียวกันบนเซิร์ฟเวอร์ฟาร์มของเว็บทั้งหมด

มาทดสอบการพิสูจน์ตัวตน Kerberos กัน โดยเปิด http://webportal.adatum.loc ในเบราว์เซอร์ของไคลเอ็นต์

คุณสามารถตรวจสอบให้แน่ใจว่ามีการใช้การรับรองความถูกต้อง Kerberos บนเว็บไซต์ของคุณโดยการตรวจสอบทราฟฟิก HTTP โดยใช้ Fiddler

เริ่ม Fiddler และเปิดเว็บไซต์เป้าหมายในเบราว์เซอร์ ในส่วนด้านซ้ายของหน้าต่าง ให้ค้นหาบรรทัดการเข้าถึงเว็บไซต์ ไปที่แท็บ ตัวตรวจสอบ ในส่วนด้านขวาของหน้าต่าง บรรทัด “Authorization Header (Negotiate) ดูเหมือนจะมีตั๋ว Kerberos” แสดงว่ามีการใช้ Kerberos เพื่อรับรองความถูกต้องบนเว็บไซต์ IIS

บทความที่เกี่ยวข้อง