未找到来自 Apache 2.4 用户的 GSuite LDAP 身份验证

未找到来自 Apache 2.4 用户的 GSuite LDAP 身份验证

我们刚刚开始考虑将一些应用程序的身份验证迁移到 GSuite 的安全 LDAP。我已经阅读了他们的设置说明,并通过 ldapsearch 使其正常工作。但是当我在 apache 配置中设置 ldap 身份验证时,无论如何它都会返回 [未找到用户][没有这样的对象] 错误。

我不擅长 LDAP 配置,所以如果出现明显错误,请见谅。我只是想知道这里是否有人使用 Apache 进行安全 LDAP 身份验证,以及我是否遗漏了一些愚蠢的陷阱。

使用 ldapsearch 一切正常:

~$ ldapsearch -H ldaps://ldap.google.com -b dc=domain,dc=com"(&(objectclass=posixAccount)(uid=test_user))"
SASL/EXTERNAL authentication started
SASL username: st=California,c=US,ou=GSuite,cn=LDAP Client,l=Mountain View,o=Google Inc.
SASL SSF: 0
# extended LDIF
#
# LDAPv3
# base <dc=domain,dc=com> with scope subtree
# filter: (&(objectclass=*)(uid=test_user))
# requesting: ALL
#

# test_user, Users, domain.com
dn: uid=test_user,ou=Users,dc=domain,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
... etc ...

但是当我尝试使用具有以下配置的 mod_ldap 登录 apache 站点时:

<LocationMatch "/folder/">
    AuthType Basic
    AuthName "TestSite"
    AuthBasicProvider ldap

    AuthLDAPUrl "ldaps://ldap.google.com/dc=domain,dc=com?uid"        
    Require valid-user

    # Client auth
    LDAPTrustedClientCert KEY_BASE64 ***FILE.key
    LDAPTrustedClientCert CERT_BASE64 ***FILE.crt
</LocationMatch>

我最终遇到了缺少对象错误:

[authnz_ldap:debug] mod_authz_core.c(809): AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
[authnz_ldap:debug] mod_authnz_ldap.c(523): [client ***:38544] AH01691: auth_ldap authenticate: 
    using URL ldaps://ldap.google.com/dc=domain,dc=com?uid
....
[authnz_ldap:trace1] mod_authnz_ldap.c(544): [client ***:38544] auth_ldap authenticate: final authn filter is (&(objectclass=*)(uid=test_user))
....
[authnz_ldap:info] [client ****:38544] AH01695: auth_ldap authenticate: user test_user authentication failed; 
    URI /folder/site [User not found][No such object]
[auth_basic:error] [client ***:38544] AH01618: user test_user not found: /folder/site

鉴于 posixUser 确实存在,而且我觉得我已经正确设置了 LDAP 应用程序,我认为错误一定是出在 apache 配置方面。有人对下一步该尝试什么有什么建议吗?

答案1

因此,我可以通过使用 stunnel 和 user/pass auth 来让它工作。

<LocationMatch "/folder/">
    AuthType Basic
    AuthName "TestSite"
    AuthBasicProvider ldap

    AuthLDAPUrl "ldaps://localhost:1636/dc=domain,dc=com?uid"  
    AuthLDAPBindDN <USER>
    AuthLDAPBindPassword <PASSWORD>  
    Require valid-user
</LocationMatch>

以及一个 stunnel 配置

[ldap]
client = yes
accept = 0.0.0.0:16360
connect = ldap.google.com:636
cert = ldap.crt
key = ldap.key

但是,我发现组授权无法正常工作,并且出现了协议错误。为了限制特定组的访问,我正在执行以下操作。

AuthLDAPUrl "ldaps://localhost:1636/dc=domain,dc=com?uid?sub?(memberOf=<GROUP>,ou=Groups,dc=domain,dc=com)"

相关内容