Apache 身份验证失败,需要 ldap-group

Apache 身份验证失败,需要 ldap-group

我一直在尝试将 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 的属性;基于此,我将其设置AuthLDAPGroupAttributememberAuthLDAPGroupAttributeIsDN设置为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 而不会出现问题,也无需使用别名。

相关内容