“유효한 사용자 필요”가 없어도 mod_auth_kerb에게 작업을 수행하도록 지시하는 방법 on KrbAuthRealm

Apache에서 mod_auth_kerb 를 사용하여 SSO 인증을 구현했습니다 . 내 구성은 다음과 같습니다.

<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-usermod_auth_kerb가 없으면 사용자를 인증하려고 시도하지 않고 KERBEROS_USER결국에 있다는 것 (null)입니다. 추가 require valid-user하면 브라우저가 지원하는 경우 사용자가 자동으로 인증되지만 브라우저가 Kerberos 협상을 지원하지 않으면 추악한 모달 로그인 양식 (ala HTTP 기본 인증)이 표시됩니다.

내가 달성하고자하는 것은 사용자 /login/가을 방문 하면 mod_auth_kerb가 Kerberos 협상을 통해 사용자를 인증하려고한다는 것입니다. 실패하면 일반 HTML 로그인 양식이 사용자에게 표시됩니다.

이런 식으로 Apache / mod_auth_kerb를 구성 할 수 있습니까?



답변

간단한 싱글 사인온 도구 (kerberos를 mod_auth_tkt와 병합하기 위해)를 만들 때이 작업을 한 번 수행했습니다. 약간의 chicanery가 필요했습니다.

  • / webauth / login은 require valid-user지시문 으로 보호되었습니다 . 누군가가 유효한 Kerberos 자격 증명으로 연결된 경우 REMOTE_USER에서 사용자 이름을 가져 와서 인증 쿠키를 제공 한 후 보내주었습니다.

  • Apache 구성은 ErrorDocument인증되지 않은 사용자를 / webauth / require_authentication으로 리디렉션 하는 요청을 사용했습니다 .

    ErrorDocument 401 / webauth / require_authentication

    다음과 같은 동작이 수행됩니다.

    • 401 결과 코드를 반환합니다 (일반적으로 ErrorDocuments는 결과 코드를 먹습니다).
    • 로그인 양식을 제시하십시오.
  • 로그인 양식은 사용자 이름 / 암호 양식을 제시하고 동일하게 유효성을 검사 한 다음 인증 쿠키를 제공합니다.


답변