我尝试使用 mod_auth_cas 进行 AuthN 和 LDAP 进行 AuthZ。mod_cas_auth 实际上是不相关的,因为我对 AuthN 的 BasicAuth 也遇到了同样的问题。如果我指定,一切都会正常工作<location "/">
,但是一旦我指定子位置,<Location "/secure">
授权就会失败,我会得到 403。
例如,这个有效并且允许指定 LDAP 组中的人员访问:
<Location "/">
AuthType Basic
AuthUserFile var/ht.passwd
AuthName Secure
AuthLDAPUrl "ldaps://<snip>?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=<snip>
AuthLDAPBindPassword <snip>
Require ldap-group CN=<snip>
</Location>
但这并不适用 - 它只会向所有人返回 403
<Location "/secure">
AuthType Basic
AuthUserFile var/ht.passwd
AuthName Secure
AuthLDAPUrl "ldaps://<snip>?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=<snip>
AuthLDAPBindPassword <snip>
Require ldap-group CN=<snip>
</Location>
在第二种情况的日志中我有:
auth_ldap authorise: User DN not found, ldap_search_ext_s() for user failed
这是 Apache 2.2 上的。我认为这肯定是一个错误,但我想知道我是否可以做点什么来让它正常工作?
答案1
但是为什么你仍然使用“AuthUserFile”?这对我来说有用:
AuthType Basic AuthName "Some name" Require ldap-group <snip> SSLOptions +FakeBasicAuth AuthBasicProvider ldap AuthLDAPBindDN uid=<snip> AuthLDAPBindPassword <snip> AuthLDAPURL ldaps://<server>/<basedn>?uid?sub AuthLDAPRemoteUserAttribute uid AuthzLDAPAuthoritative on Options MultiViews
错误“未找到用户 DN”告诉您有关身份验证问题。因此,请检查您的 authbinddn 和 authbindpassword,例如使用 ldapsearch:ldapsearch -H ldap://server -x -D cn=