RHEL 7.4, Apache/2.4.6에서 mod_authnz_ldap.so 및 AuthLDAPInitialBindAsUser를 사용하여 구성되었습니다.
구성은 사용자 로그인을 바인딩하여 LDAP 인증을 수행하는 것입니다.
"인증 필요" 팝업에서 사용자 이름/비밀번호를 묻는 메시지가 표시되는 경우:
- 만약 사용자와누구나두 필드를 모두 비워 두세요.또는사용자 이름을 입력하고 비밀번호 필드를 비워두고 확인을 클릭하세요.그는 "서버에 내부 오류 또는 구성 오류가 발생하여 요청을 완료할 수 없습니다."- /var/log/httpd/error_log에 오류가 없습니다.
- 사용자가 잘못된 사용자 이름 및/또는 잘못된 비밀번호를 입력하면 시스템은 정상적으로 반응하고 팝업을 다시 표시합니다.
- 사용자가 올바른 사용자 이름과 비밀번호를 입력하면 시스템이 정상적으로 반응하고 필요한 웹 페이지를 표시합니다.
이 오류 페이지가 나타나지 않게 하려면 어떻게 해야 합니까?
kibana.conf:
<VirtualHost *:80>
ServerName kibana.mydomain.com
ProxyPass / http://127.0.0.1:5601/
ProxyPassReverse / http://127.0.0.1:5601/
<Location "/app/kibana">
AuthType basic
AuthName "LDAP Login"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldap.mydomain/dc=example,dc=com?sAMAccountName?sub?(objectClass=*)"
AuthLDAPInitialBindAsUser on
AuthLDAPInitialBindPattern (.*) "CN=$1,ou=users,dc=example,dc=com"
Require valid-user
</Location>
</VirtualHost>
/var/log/httpd/error_log에 설정 했는데 LDAPLibraryDebug 7
다음과 같은 오류 메시지가 나타납니다.
res_errno: 1, res_error: <000004DC: LdapErr: DSID-0C09075A, 설명:이 작업을 수행하려면 연결에서 바인딩이 성공적으로 완료되어야 합니다., 데이터 0, v1db1>, res_matched: <> ldap_free_request (origid 2, msgid 2) ldap_parse_result ldap_err2string [Thu Nov 29, 2018 20:36:09.068006] [authnz_ldap:info] [pid 25551] [client 72.23.42.165 : 56화 915: auth_ldap 확인: 사용자 확인에 실패했습니다. URI /home/debug.jsp [ldap_search_ext_s()사용자용실패][조작 오류] <---- *이렇게 하면확인 실패아니요조작 오류처리할 수 없음httplandler그리고 결국은 되었다인터넷 서버 오류*
정보"이 작업을 수행하려면 연결에서 바인딩이 성공적으로 완료되어야 합니다.” 바인딩이 불완전하더라도 모듈이 다른 작업을 수행하려고 한다고 믿게 됩니다. 그러나 실제로는 비밀번호가 유효하지 않거나 사용자 이름이 제공되지 않은 경우처럼 반응해야 합니다.
사용자 이름을 전달했지만 비밀번호 필드를 비워두면 오류 메시지가 나타납니다.
[Thu Nov 29 20:48:48.818805 2018] [authnz_ldap:info] [pid 25550] [client 72.23.42.165:57045] AH01695: auth_ldap 인증: 사용자 the.user에 대한 인증 실패; URI /home/debug.jsp [ LDAP : ldap_simple_bind() 실패] [잘못된 자격 증명] [Thu Nov 29 2018 20:48:48.818833] [auth_basic:error] [pid 25550] [Client 72.23.42.165:57045] AH01617: 사용자 사용자:확인 실패"/home/debug.jsp"의 경우:비밀번호가 일치하지 않습니다
사용자 이름을 입력하지 않았지만 비밀번호 필드에 값이 있는 경우 오류 메시지
[Thu Nov 29 20:49:18.720210] [authnz_ldap:info] [pid 25549] [client 72.23.42.165:57050] AH01695: auth_ldap 인증: 사용자 인증 실패; URI /home/debug.jsp [ LDAP: ldap_simple_bind() 실패 ] [잘못된 자격 증명] [Thu Nov 29 2018 20:49:18.720222] [auth_basic:error] [pid 25549] [클라이언트 72.23.42.165:57050] AH01617: 사용자:확인 실패"/home/debug.jsp"의 경우:비밀번호가 일치하지 않습니다
사용자 이름/비밀번호가 정확하면 메시지 표시
[Thu Nov 29 20:53:29.658294] [authnz_ldap:debug] [pid 25551] mod_authnz_ldap.c(593): [client 72.23.42.165:57105] AH01697: auth_ldap auth: accept.user [11월 29일 Thu 20:53: 29.658328 2018] [authz_core:debug] [pid 25551] mod_authz_core.c(809): [client 72.23.42.165:57105] AH01626: 승인 결과에 유효한 사용자가 필요함: 허용됨 [2018년 11월 29일 Thu Nov 20:53:29.658338 ] [authz_core:debug] [pid 25551] mod_authz_core.c(809): [client 72.23.42.165:57105] AH01626: 인증 결과: 승인됨 [Thu Nov 29 20:53:29.658546 2018] [proxy:debug] [pid 25551] mod_proxy.c(1123): [client 72.23.42.165:57105] AH01143: 실행 체계 http 핸들러(0번 시도)
답변1
같은 문제에 대한 또 다른 기사가 있습니다.거기에서 제안된 해결책(이 문제가 발생했을 때 나에게 효과가 있었던)은 이 옵션을 LDAP 구성에 추가하는 것입니다.
AuthLDAPBindAuthoritative off
Apache 문서에서:
기본적으로 후속 인증 공급자는 사용자를 DN에 매핑할 수 없는 경우에만 쿼리되지만, 사용자가 DN에 매핑될 수 있고 LDAP 바인드를 사용하여 비밀번호를 확인할 수 없는 경우에는 쿼리되지 않습니다. AuthLDAPBindAuthoritative가 off로 설정된 경우 어떤 이유로든 LDAP 바인드(현재 사용자의 자격 증명 사용)가 실패하면 구성된 다른 인증 모듈에서 사용자를 인증할 수 있습니다.
따라서 이 옵션을 설정하면 off
Apache가 오류를 존재하지 않는 다음 인증 공급자를 쿼리하려고 시도하는 것으로 변환하는 것으로 보입니다. 이 작업이 실패하면 500 대신 예상되는 401 오류 페이지가 표시됩니다.
답변2
나는 오류가 없다고 생각합니다. 단지 해당 특정 문제에 대한 오류 페이지가 기본값으로 설정되어 있다는 것뿐입니다. 비밀번호 오류 페이지를 자신이 지정한 페이지로 설정하는 방법을 찾아보시길 권해 드립니다.
더 잘 보려면 LDAPLibraryDebug를 활성화하세요.
추가 정보:아파치 모듈: mod_authnz_ldap
비디오 및 구성:LDAP의 YouTube 비디오