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-user
mod_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는 결과 코드를 먹습니다).
- 로그인 양식을 제시하십시오.
-
로그인 양식은 사용자 이름 / 암호 양식을 제시하고 동일하게 유효성을 검사 한 다음 인증 쿠키를 제공합니다.