我想在 Apache 中配置 SSO,包括基于组的身份验证。这意味着属于特定组的用户应该能够登录网站而无需输入登录数据。不属于该组的用户应被拒绝登录网站。
Kerberos 和 LDAP 在 Web 服务器上运行良好。我已经使用 kinit、klist 和 ldapsearch 进行了检查。Apache 的 Kerberos/LDAP 站点配置如下:
AuthType Kerberos
AuthName "Active Directory"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbServiceName HTTP
KrbAuthRealms domain.com
KrbLocalUserMapping On
Krb5Keytab /etc/apache2/kerb.keytab
Require valid-user
AuthLDAPBindAuthoritative On
AuthLDAPURL "ldaps://dc.domain.com/DC=domain,DC=com?sAMAccountName?sub?"
AuthLDAPRemoteUserAttribute "sAMAccountName"
AuthLDAPBindDN "CN=ldapuser,OU=servicegroups,DC=domain,DC=com"
AuthLDAPBindPassword "<password>"
require ldap-filter memberOf:1.2.840.113556.1.4.1941:=CN=ldapgroup,OU=groups,DC=domain,DC=com
问题:用户可以使用 SSO 无需输入登录数据即可登录。但这不仅适用于经过身份验证的用户,也适用于未经身份验证的用户。LDAP 似乎根本不检查用户是否是组“ldapgroup”的成员。
LDAP 过滤器是否仍然正确,或者我在这里犯了什么错误?