我正在尝试结合基本文件和LDAPApache .htaccess 文件中的用户身份验证,但我无法同时使用这两种方法。只能使用其中一种。
这是我的设置:
.htaccess
AuthType Basic
AuthBasicProvider file ldap
AuthUserFile <path>/passwd
AuthGroupFile <path>/group
AuthLDAPURL "ldap://ldap.<my-domain>.com/ou=People,dc=<my-domain>,dc=com?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
<Limit GET POST PUT>
require group admin ldap-group cn=web,ou=Group,dc=<my-domain>,dc=com
</Limit>
密码
test:jhhLuf0DfajXk
团体
admin:test
当我更改限制值并删除或重新排序组设置时,我让一个或另一个身份验证提供程序工作。所以我觉得是我的语法问题,但我搞不清楚。
说实话,团体文件可以全部删除,但我试过了,没有任何影响。所以我把它包括进去,以防它有影响。
有人能给我指点一下吗?这个问题与apache auth:LDAP 和 htpasswd 的组合但并不完全相同。
在此先感谢您的帮助。
答案1
我能够自己解决问题。它基本上取决于有效用户选项必需的指示。
Require valid-user
文档可以在这里找到: http://httpd.apache.org/docs/2.0/mod/core.html#require
正如我在最初的问题中提到的那样,文件团体不再是要求了。一旦我放弃了这个指令,随后必需的伴随它的指令,有效用户选项似乎已经解决了这个问题。我的工作.htaccess文件如下所示。
.htaccess
AuthName "Auth Test"
AuthType Basic
AuthBasicProvider file ldap
AuthUserFile <path>/passwd
AuthLDAPURL "ldap://ldap.<my-domain>.com/ou=People,dc=<my-domain>,dc=com?uid"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require valid-user
文件和LDAP基本身份验证可以正常工作并与该设置很好地共存。
笔记
需要启用以下 Apache 模块:
- authnz_ldap
- LDAP 目录服务
我的/etc/apache2/mods-enabled
包括这些:
authnz_ldap.load -> ../mods-available/authnz_ldap.load
ldap.conf -> ../mods-available/ldap.conf
ldap.load -> ../mods-available/ldap.load
答案2
根据apache2 mod_auth_basic,必须意识到AuthBasicProvider如果用户名存在于多个提供商中,则很重要:
按顺序查询提供商,直到找到与请求的用户名匹配的提供商,此时该唯一提供商将尝试检查密码。验证密码失败不会导致控制权被传递给后续提供商。