结合 Apache 身份验证提供程序(文件和 LDAP)

结合 Apache 身份验证提供程序(文件和 LDAP)

我正在尝试结合基本文件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如果用户名存在于多个提供商中,则很重要:

按顺序查询提供商,直到找到与请求的用户名匹配的提供商,此时该唯一提供商将尝试检查密码。验证密码失败不会导致控制权被传递给后续提供商。

相关内容