我已经成功使用 DIGEST-MD5 机制运行了 LDAP-SASL 身份验证。为了实现这一点,我严格遵循了下面列出的步骤
下载了 SleepyCat 4.2.52,手动编译和构建。下载后,我直接按照解压后的 .tar.gz 包目录下的 docs/index.html 文件中的说明进行操作。
解压后,您可以运行建议的
root@rdnt03:/usr/local/BerkeleyDB.4.2/build_unix#../dist/configure root@rdnt03:/usr/local/BerkeleyDB.4.2/build_unix#make root@rdnt03:/usr/local/BerkeleyDB.4.2/build_unix#make install |
下载了 Cyrus SASL 2.1.17,解压并按照解压后的 .tar.gz 文件目录下的 doc/install.html 文档中的说明进行操作。这里需要注意一点,您需要使用一些环境变量运行 configure 脚本
root@rdnt03:/usr/local/cyrus-sasl-2.1.17#env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure |
CPPFLAGS 和 LDFLAGS 环境变量应该指向 Berkeley BDB 安装的 include 和 lib 目录。
之后,您可以运行建议的
root@rdnt03:/usr/local/cyrus-sasl-2.1.17#make root@rdnt03:/usr/local/cyrus-sasl-2.1.17#make install root@rdnt03:/usr/local/cyrus-sasl-2.1.17#ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 |
最后,我使用与本文档中列出的相同方向安装了 OpenLDAP 2.2.5,只需以与 SASL 的 configure 相同的方式运行 configure 脚本即可
root@rdnt03:/usr/local/openldap-2.2.5#env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure |
之后,我运行了建议的
root@rdnt03:/usr/local/openldap-2.2.5#make depend root@rdnt03:/usr/local/openldap-2.2.5#make root@rdnt03:/usr/local/openldap-2.2.5#make install |
接下来,我创建了 sasl 用户数据库
root@rdnt03:~# saslpasswd2 -c admin |
系统会提示您输入密码。请记住,用户名不应该是 DN(专有名称)。另请记住使用与目录树上的管理员条目相同的密码。
现在,您应该在启动 slapd 守护进程并测试身份验证之前,在 slapd.conf 文件中设置 sasl-regexp 指令。我的 slapd.conf 文件位于 /usr/local/etc/openldap
sasl-regexp uid=(.*),cn=rdnt03,cn=DIGEST-MD5,cn=auth uid=$1,ou=People,o=Ever |
此参数的格式为
uid=<username>,cn=<realm>,cn=<mech>,cn=auth
用户名从 sasl 中获取,并插入到 ldap 搜索字符串中的 $1 位置。您的 realm 应该要是您的 FQDN(完全限定域名),但在某些情况下并非如此,例如我的情况。要找出您的 realm 是什么,请执行
root@rdnt03:~# sasldblistusers2 admin@rdnt03: userPassword admin@rdnt03: cmusaslsecretOTP |
在我的例子中,rdnt03 被指示为 realm。如果它是您的 FQDN,您应该不会有任何问题。我使用以下 LDIF 文件
dn: o=Ever o: Ever description: Organization Root objectClass: top objectClass: organization dn: ou=Staff, o=Ever ou: Staff description: These are privileged users that can interact with Organization products objectClass: top objectClass: organizationalUnit dn: ou=People, o=Ever ou: People objectClass: top objectClass: organizationalUnit dn: uid=admin, ou=Staff, o=Ever uid: admin cn: LDAP Adminstrator sn: admin userPassword: {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ= objectClass: Top objectClass: Person objectClass: Organizationalperson objectClass: Inetorgperson dn: uid=admin,ou=People,o=Ever objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson userPassword: {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ= displayName: admin mail: admin@eversystems.com.br uid: admin cn: Administrator sn: admin |
使用以下命令将条目添加到您的 LDAP 目录
slapadd -c -l Ever.ldif -f slapd.conf -v -d 256 |
现在,启动 slapd 守护进程并使用 ldapsearch 命令运行查询
root@rdnt03:~# ldapsearch -U admin@rdnt03 -b 'o=Ever' '(objectclass=*)' SASL/DIGEST-MD5 authentication started Please enter your password: SASL username: admin@rdnt03 SASL SSF: 128 SASL installing layers ... Entries ... |
就这样!如果您喜欢将 SASL 与 Kerberos V 或 GSSAPI 一起使用,http://www.openldap.org/doc/admin22/sasl.html 上有一个有用的链接。此链接假定您已设法安装和配置了 SASL 库。邮件列表将帮助您开始处理此事:http://asg.web.cmu.edu/sasl/index.html#mailinglists