วิธีบอก mod_auth_kerb ให้ทำงานแม้ว่าจะไม่มี“ ต้องการผู้ใช้ที่ถูกต้อง”


11

ฉันใช้การพิสูจน์ตัวตน SSO โดยใช้mod_auth_kerbบน Apache การกำหนดค่าของฉันมีลักษณะเช่นนี้:

<Location /login/ >
    AuthType Kerberos
    AuthName "Kerberos Login"
    KrbMethodNegotiate on
    KrbAuthoritative on
    KrbVerifyKDC on
    KrbAuthRealm D.ETHZ.CH
    Krb5Keytab /etc/HTTP.keytab
    KrbSaveCredentials on
    RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>

ปัญหาของฉันคือว่าไม่มีrequire valid-user, mod_auth_kerb ไม่ได้พยายามที่จะพิสูจน์ตัวตนผู้ใช้และสิ้นสุดขึ้นเป็นKERBEROS_USER (null)หากฉันเพิ่มrequire valid-userผู้ใช้จะได้รับการรับรองความถูกต้องโดยอัตโนมัติหากเบราว์เซอร์รองรับ แต่จะแสดงฟอร์มล็อกอินที่น่าเกลียด (ala HTTP Basic Auth) หากเบราว์เซอร์ไม่รองรับ Kerberos Negotiate

สิ่งที่ฉันต้องการบรรลุคือถ้าผู้ใช้เข้าชม/login/mod_auth_kerb พยายามพิสูจน์ตัวตนผู้ใช้ผ่าน Kerberos Negotiate หากล้มเหลวระบบจะแสดงแบบฟอร์มการเข้าสู่ระบบ HTML ปกติให้กับผู้ใช้

เป็นไปได้หรือไม่ที่จะกำหนดค่า Apache / mod_auth_kerb ในลักษณะนี้?


หากคุณระบุฟอร์มเข้าสู่ระบบและการจัดการข้อผิดพลาดที่เหมาะสมนี่เป็นพฤติกรรมที่เหมาะสม (คาดว่า)
BillThor

คำตอบ:


12

ฉันทำสิ่งนี้ครั้งเดียวเมื่อฉันสร้างเครื่องมือการลงชื่อเข้าใช้แบบง่าย (เพื่อรวม Kerberos กับ mod_auth_tkt) มันจำเป็นต้องใช้ chicanery นิดหน่อย:

  • / webauth / เข้าสู่ระบบได้รับการคุ้มครองโดยrequire valid-userคำสั่ง หากมีคนเชื่อมต่อกับข้อมูลรับรอง Kerberos ที่ถูกต้องเราได้รับชื่อผู้ใช้จาก REMOTE_USER มอบคุกกี้การรับรองความถูกต้องให้พวกเขาและส่งพวกเขาในแบบของพวกเขา

  • การกำหนดค่า Apache ใช้การErrorDocumentร้องขอเพื่อเปลี่ยนเส้นทางผู้ใช้ที่ไม่ได้รับการรับรองความถูกต้องไปยัง / webauth / require_authentication

    ErrorDocument 401 / webauth / require_authentication

    สิ่งนี้จะทำการกระทำต่อไปนี้:

    • ส่งคืนรหัสผลลัพธ์ 401 (โดยปกติ ErrorDocuments กินรหัสผลลัพธ์ของคุณ) และ
    • แสดงแบบฟอร์มเข้าสู่ระบบ
  • แบบฟอร์มการเข้าสู่ระบบจะทำสิ่งที่คุณคาดหวัง: นำเสนอชื่อผู้ใช้ / รหัสผ่านตรวจสอบความถูกต้องเดียวกันแล้วให้คุกกี้รับรองความถูกต้อง


+1 สำหรับโซลูชันที่น่าสนใจ
Sam Halicke

เยี่ยมมากมันใช้งานได้อย่างสมบูรณ์แบบ!
Benjamin Wohlwend
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.