一、使用访问控制(Access Control),实现用户认证
关于它,在OpenLDAP 2.1 Administrator's Guide里有详细说明。这里只管应用。
修改OpenLDAP的配置文件,增加控制块
# vi /usr/local/etc/openldap/slapd.conf
access to attr=userPassword
by anonymous auth
by self write
by * none
access to *
by self write
by users read
此控制块用于禁止匿名查询,而认证用户可以修改自己的所有属性,允许查询它人的信息条目,但除了userPassword属性。基本上上面的每一行都是必须的,经过反复删除恢复,终于对访问控制块的认识有了质的飞跃。特别是对于“by anonymous auth”的理解,没有了它,需要认证的用户不能完成认证,因为它查询不到密码呀!所以“auth”在这里的作用就是允许匿名用户可以读到密码,但只能用于验证,而不能用于其它的用途,这就保证了密码属性的安全。
重启ldap服务
# /usr/local/etc/rc.d/slapd.sh restart
查询测试
1、如果还使用LDAP Browser 2.6的话,这次就可以使用其它的用户bind了,如使用用户:
uid=abc,ou=people,dc=example,dc=com
它的密码是:abcabc(见前面的例子)
2、在命令行完成
# ldapsearch -x -b 'dc=example,dc=com' 'objectClass=*'
匿名查询结果:(显然没有任何条目)
# extended LDIF
#
# LDAPv3
# base with scope sub
# filter: objectClass=*
# requesting: ALL
#
# search result
search: 2
result: 0 Success
# numResponses: 1
# ldapsearch -x -b 'dc=example,dc=com' -D 'uid=abc,ou=people,dc=example,dc=com' -w abcabc 'uid=a*'
通过指定用户查询的结果:
# extended LDIF
#
# LDAPv3
# base with scope sub
# filter: uid=a*