关于OpenLDAP和AD帐号的整合,网上有大量的文档,绝大多数都不符合我们的需求,下面的方案是我经过调研、测试、修改、最终采用的。
1. 需求概述
公司网络中有两种帐号:OpenLDAP帐号和AD帐号,用户需要记住两套密码,需要修改系统让用户只需要记住一套密码。
2. 需求分析
本方案主要解决使用便利性问题:用户只需要记一个密码,就可登录相关系统。
根据已知的信息,Exchange邮件系统只能用AD认证,因此,最终的密码必须用AD的密码。具体有如下几个方法:
1)用AD替换OpenLDAP
2)OpenLDAP作为代理,将访问指向Windows AD
3)OpenLDAP只修改userPassword的属性,使它的值由Windows AD提供,其它设置不变
方法1)、2)存在下述问题:
目前运行的一些系统只兼容AD或OpenLDAP中的一种,如果用其中一种替换另一种,会造成这些系统无法认证,修复起来需要大量时间,比如:CI。造成这种情况的原因是OpenLDAP与AD的差异性:属性、组、DN、权限管理等;
如果OpenLDAP设置为AD的代理,产生的问题和上面相同;
方法3)对于当前的情况更可行一些。
3. 方案概述
OpenLDAP内置了对于SASL的支持,本方案基于以下文档,但是去除了导出ADca证书、与OpenLDAP ca证书整合的部分:
经过后期测试,不需要导出AD ca证书也能实现相关功能。
3.1 AD配置
1)创建bind帐号
在ou=Users,dc=test,dc=com下建立一个英文的普通帐号,比如:
cn=saslauthd,ou=Users,dc=test,dc=com
3.2 OpenLDAP配置
1)配置SASLAUTHD
安装sasl2
配置sasl2,采用ldap认证, ldap_servers填写AD地址,ldap_bind_dn填写之前创建的帐号
2)修改帐号的userPassword
把用户帐号的userPassword值改为 {SASL}用户名@域名 这样的形式,例如:{SASL}hupeng@test.com,即可让该帐号使用AD的密码。
3.3其它工作
1)确保使用AD密码的OpenLDAP帐号在AD上有同名帐号
2)修改OpenLDAP管理系统的密码修改功能,使其能将用户密码设置为采用AD密码
3)通知用AD密码认证的用户统一通过exchange
owa进行密码的修改