我们尝试为公司范围的身份验证设置Active Directory服务器.
应该针对AD进行身份验证的一些服务器放在DMZ中,因此我们考虑使用LDAP服务器作为代理,因此DMZ中只有一台服务器必须连接到放置AD服务器的LAN ).
通过一些谷歌搜索,配置slapd是没有问题的(参见下面的slapd.conf),它似乎在使用ldapsearch工具时有效,所以我们尝试在apache2 htaccess中使用它来通过LDAP代理验证用户.
这就是问题所在:
我们发现AD中的用户名存储在属性’sAMAccountName’中,因此我们在.htaccess中配置它(见下文)但登录不起作用.
在syslog中我们发现ldapsearch的过滤器不是(就像它应该)'(&(objectClass = *)(sAMAccountName = authtest01))”'(&(objectClass = *)(?= undefined ))’我们发现是slapd的方式来表明该属性不存在或该属性的语法错误的值.
我们想到了一个缺少的模式并找到了microsoft.schema(以及它的.std / .ext)并尝试将它们包含在slapd.conf中.哪个不起作用.我们找不到工作模式,所以我们只选择了关于sAMAccountName的部分并构建了一个包含的microsoft.minimal.schema(见下文).现在我们在syslog中获得更精确的日志:
Jun 16 13:32:04 breauthsrv01 slapd[21229]: get_ava: illegal value for attributeType sAMAccountName Jun 16 13:32:04 breauthsrv01 slapd[21229]: conn=0 op=1 SRCH base="ou=xxx,dc=int,dc=xxx,dc=de" scope=2 deref=3 filter="(&(objectClass=\*)(?sAMAccountName=authtest01))" Jun 16 13:32:04 breauthsrv01 slapd[21229]: conn=0 op=1 SRCH attr=sAMAccountName Jun 16 13:32:04 breauthsrv01 slapd[21229]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
通过LDAP直接使用我们的Apache htaccess与AD工作.
有人有工作设置吗?感谢您提前提供的任何帮助:
slapd.conf中:
allow bind_v2 include /etc/ldap/schema/core.schema ... include /etc/ldap/schema/microsoft.minimal.schema ... backend ldap database ldap suffix "ou=xxx,dc=de" uri "ldap://80.156.177.161:389" acl-bind bindmethod=simple binddn="CN=authtest01,ou=GPO-Test,ou=xxx,dc=de" credentials=xxxxx
的.htaccess:
AuthBasicProvider ldap AuthType basic AuthName "AuthTest" AuthLDAPURL "ldap://breauthsrv01.xxx.de:389/OU=xxx,DC=int,DC=xxx,DC=de?sAMAccountName?sub" AuthzLDAPAuthoritative On AuthLDAPGroupAttribute member AuthLDAPBindDN CN=authtest02,OU=GPO-Test,OU=xxx,DC=de AuthLDAPBindPassword test123 Require valid-user
microsoft.minimal.schema:
attributetype ( 1.2.840.113556.1.4.221 NAME 'sAMAccountName' Syntax '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )
您需要在slapd.conf文件中添加映射:
moduleload rwm ... overlay rwm rwm-map attribute uid sAMAccountName rwm-map objectClass posixGroup group rwm-map objectClass posixAccount person rwm-map objectClass memberUid member
然后,您可以在.htaccess文件中搜索uid属性而不是sAMAccountName属性:
AuthLDAPURL "ldap://breauthsrv01.xxx.de:389/OU=xxx,DC=de?uid?sub"