我一直在尝试将 Windows 服务器上的 apache 与我们的活动目录服务器绑定以进行身份验证和授权。
为了测试它,我一直在尝试使用“ldap-status”处理程序,并使用以下参数
<Location "/ldap-status">
SetHandler ldap-status
AuthType Basic
AuthBasicProvider ldap
AuthName "LDAP Status"
LDAPReferrals off
AuthLDAPBindAuthoritative on
AuthLDAPURL "ldap://1.2.3.4:389/cn=Users,dc=XXX,dc=example,dc=com?sAMAccountName?sub?(objectClass=person)" NONE
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN on
AuthLDAPMaxSubGroupDepth 0
AuthLDAPBindDN xxx
AuthLDAPBindPassword xxx
Require ldap-group "cn=TEST GROUP,cn=Users,dc=XXX,dc=example,dc=com"
</Location>
到目前为止,如果我删除Require ldap-group
它并将其替换为Require valid-user
,它可以正常工作,但如果我恢复组要求则不行。
从我使用 powershell 从 AD 服务器看到的情况来看,该组存在,并且它有一个member
列出所有成员 DN 的属性;基于此,我将其设置AuthLDAPGroupAttribute
为member
和AuthLDAPGroupAttributeIsDN
设置为on
。
我确信我的用户属于我需要检查的组,但是在 apache 错误日志中只有这条记录,这并不能真正帮助理解原因:
[2020 年 4 月 27 日星期一 14:52:08.023952] [authz_core:error] [pid 13168:tid 2072] [客户端 10.0.1.45:59690] AH01631:用户 mtassinari:“/ldap-status”授权失败:
我该怎么做才能纠正配置以便了解为什么“require ldap-group”会失败?
答案1
最后,我可以通过使用别名拆分身份验证和授权来使其工作,如下所示:
<AuthnProviderAlias ldap my-ldap>
AuthLDAPBindAuthoritative on
AuthLDAPURL "ldap://1.2.1.4:389/cn=Users,dc=XXX,dc=example,dc=com?sAMAccountName?sub?(objectClass=person)" NONE
AuthLDAPBindDN xxx
AuthLDAPBindPassword xxx
</AuthnProviderAlias>
<AuthzProviderAlias ldap-group ldap-group-test "cn=TEST GROUP,cn=Users,dc=XXX,dc=example,dc=com">
AuthLDAPURL "ldap://1.2.1.4:389/cn=Users,dc=XXX,dc=example,dc=com" NONE
AuthLDAPBindDN xxx
AuthLDAPBindPassword xxx
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN on
AuthLDAPMaxSubGroupDepth 0
</AuthzProviderAlias>
<Location "/ldap-status">
SetHandler ldap-status
LDAPReferrals off
AuthType Basic
AuthName "LDAP Status"
AuthBasicProvider my-ldap
Require ldap-group-test
</Location>
我思考这里的关键区别是AuthLDAPURL
,授权提供商中没有任何过滤器,必须重复常见的配置参数才能使其工作,这感觉不对。
答案2
当我遇到这个问题时,我特别认为我应该引用可区分组名(因为它包含空格),但是在需要 ldap-group 时你特别不应该使用引号,请参阅参考: https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html#reqgroup
一旦我删除了引号,我就能够使用 ldap-group 而不会出现问题,也无需使用别名。