最近公司想将旗下的几个网站的用户信息统一,实现统一管理及帐号漫游;
想试试ldap能不能实现我的要求,当然了,还是看到python有python-ldap的接口;
当然首先要先把LDAP的服务器给搭起来,花了半天的时间,在party总是很无耻的重置google搜索信息(而百度又实在是很无能)的恶劣条件下,总算是搭好了,留下足迹给需要的同志们查看吧;;
我的环境:ubuntu 10.04 PHP环境(LAMP)即可;
安装产品:LDAP,PHPldapmyadmin,python-ldap
1,我总是迫不及待的会先装python包,
sudo apt-get install python-ldap 即可
import ldap 如果没有报错就是安装成功了,
ldap.__version__ --> '2.3.10' 我安装后是这个版本
2,进入正题,LDAP的安装,这里主要参考了(http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=246642&start=0)(http://doc.ubuntu.com/ubuntu/serverguide/C/openldap-server.html)
1 安装相关的软件
sudo apt-get install slapd ldap-utils
2 把需要的schemas加载到服务器上
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldi
---------------------------------------------------------------------
不要使用纯文本密码。先要用slappasswd yourpasswd
生成加密密码 (以下示例)
$ slappasswd New password: Re-enter password: {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m
将以下有要用来root password的地方用你生成的加密密码替换
3 建立所需的存储数据库
backend.example.com.ldif
- #Loaddynamicbackendmodules
- dn:cn=module,cn=config
- objectClass:olcModuleList
- cn:module
- olcModulepath:/usr/lib/ldap
- olcModuleload:back_hdb
- #Databasesettings
- dn:olcDatabase=hdb,250)"> objectClass:olcDatabaseConfig
- objectClass:olcHdbConfig
- olcDatabase:{1}hdb
- olcSuffix:dc=example,dc=com
- olcDbDirectory:/var/lib/ldap
- olcRootDN:cn=admin,dc=example,250)"> olcRootPW:secret
- olcDbConfig:set_cachesize020971520
- olcDbConfig:set_lk_max_objects1500
- olcDbConfig:set_lk_max_locks1500
- olcDbConfig:set_lk_max_lockers1500
- olcDbIndex:objectClasseq
- olcLastMod:TRUE
- olcDbCheckpoint:51230
- olcAccess:toattrs=userPasswordbydn="cn=admin,dc=example,dc=com"writebyanonymousauthbyselfwriteby*none
- olcAccess:toattrs=shadowLastChangebyselfwriteby*read
- olcAccess:todn.base=""by*read
- olcAccess:to*bydn="cn=admin,dc=com"writeby*read
使其生效
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldi
4 最后创建frontend.example.com.ldif
#Createtop-levelobjectindomain