Làm thế nào để yêu cầu mod_auth_kerb thực hiện công việc của mình mặc dù không có yêu cầu nào của người dùng hợp lệ


11

Tôi đã triển khai xác thực SSO bằng mod_auth_kerb trên Apache. Cấu hình của tôi trông như thế này:

<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>

Vấn đề của tôi là, nếu không require valid-user, mod_auth_kerb thậm chí không cố gắng xác thực người dùng và KERBEROS_USERcuối cùng trở thành (null). Nếu tôi thêm require valid-user, người dùng sẽ được xác thực tự động nếu trình duyệt hỗ trợ, nhưng được hiển thị một hình thức đăng nhập phương thức xấu xí (ala HTTP Basic Auth) nếu trình duyệt không hỗ trợ Kerberos đàm phán.

Những gì tôi muốn đạt được là nếu người dùng truy cập /login/, mod_auth_kerb cố gắng xác thực người dùng thông qua Kerberos đàm phán. Nếu thất bại, một hình thức đăng nhập HTML bình thường sẽ được trình bày cho người dùng.

Có thể định cấu hình Apache / mod_auth_kerb theo cách như vậy không?


Chặn bạn cung cấp một hình thức đăng nhập và xử lý lỗi thích hợp, đây là hành vi thích hợp (dự kiến).
BillThor

Câu trả lời:


12

Tôi đã thực hiện điều này một lần khi tôi xây dựng một công cụ đăng nhập đơn giản (để hợp nhất Kerberos với mod_auth_tkt). Nó đòi hỏi một chút chicanery:

  • / webauth / đăng nhập đã được bảo vệ bởi một lệnh require valid-user. Nếu ai đó được kết nối với thông tin xác thực Kerberos hợp lệ, chúng tôi đã nhận được tên người dùng của họ từ REMOTE_USER, đã cho họ một cookie xác thực và gửi cho họ trên đường đi.

  • Cấu hình Apache đã sử dụng một ErrorDocumentyêu cầu để chuyển hướng người dùng chưa được xác thực đến / webauth / allow_authentication:

    ErrorDocument 401 / webauth / allow_authentication

    Điều này sẽ thực hiện các hành động sau:

    • Trả về mã kết quả 401 (thông thường, ErrorDocument ăn mã kết quả của bạn) và
    • Trình bày một hình thức đăng nhập.
  • Biểu mẫu đăng nhập sẽ thực hiện chính xác những gì bạn mong đợi: xuất trình biểu mẫu tên người dùng / mật khẩu, xác thực tương tự và sau đó cung cấp cho họ cookie xác thực.


+1 cho một giải pháp thú vị.
Sam Halicke

tuyệt vời, điều này hoạt động hoàn hảo!
Benjamin Wohlwend
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.