Sakai和LDAP的整合
现在需要LDAP来统一管理和认证用户的信息,所以需要sakai与ldap密切整合。我们选用的ldap版本是openLDAP。
可以直接下载windows 版的安装程序,默认安装就好,有些版本会自动地把Berkeyle DB 也安装好。我安装版本是openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe,也就自动安装好了Berkeyle DB。最主要的工作是配置slapd.conf。配置好后,运行slapd -d 256即可察看是否成功。256是记录日志的等级(0 - 256),具体的说明可以参看官方网站。我选用的provider是Alternative JLDAP Providers,可以从sakai网站下载整个project,然后替换掉以前的providers即可。
slapd.conf需要根据sakai的需要做配置。主要配置如下所示:
slapd.conf片断
suffix "dc=nldap,dc=com"
rootdn "cn=manager,dc=nldap,dc=com"
rootpw {MD5}lUbTrx0LmzDXkyabcdeOA==
index cn,sn,uid,mail,displayName eq
access to attrs=userPassword
by self write
by anonymous auth
by dn.base="cn=manager,dc=nldap,dc=com" write
by * none
access to *
by self write
by dn.base="cn=manager,dc=nldap,dc=com" write
by * read
sakai-src\providers\component\src\webapp\WEB-INF\jldap-beans.xml片断
<bean id="org.sakaiproject.user.api.UserDirectoryProvider"
class="edu.amc.sakai.user.JLDAPDirectoryProvider" init-method="init" destroy-method="destroy" singleton="true">
<property name="ldapHost">
<value>127.0.0.1</value>
</property>
<property name="ldapPort">
<value>389</value>
</property>
<property name="ldapUser">
<value>cn=manager,dc=nldap,dc=com</value>
</property>
<property name="ldapPassword">
<value>mypassword</value>
</property>
<property name="basePath">
<value>cn=manager,dc=nldap,dc=com</value>
</property>
<property name="caseSensitiveCacheKeys">
<value>false</value>
</property>
<property name="updateUserAfterAuthentication">
<value>true</value>
</property>
<property name="ldapAttributeMapper">
<ref bean="edu.amc.sakai.user.LdapAttributeMapper" />
</property>
</bean>
<bean id="edu.amc.sakai.user.LdapAttributeMapper class="edu.amc.sakai.user.SimpleLdapAttributeMapper"
init-method="init" singleton="true">
<property name="attributeMappings">
<map>
<entry key="login"><value>cn</value></entry>
<entry key="firstName"><value>givenName</value></entry>
<entry key="lastName"><value>sn</value></entry>
<entry key="email"><value>mail</value></entry>
<entry key="groupMembership"><value>displayName</value></entry>
</map>
</property>
<property name="userTypeMapper">
<ref bean="edu.amc.sakai.user.EmptyStringUserTypeMapper" />
</property>
</bean>
sakai.properties片断
ldapHost@org.sakaiproject.user.api.UserDirectoryProvider=127.0.0.1
ldapPort@org.sakaiproject.user.api.UserDirectoryProvider=389
basePath@org.sakaiproject.user.api.UserDirectoryProvider=dc=nldap,dc=com
ldapUser@org.sakaiproject.user.api.UserDirectoryProvider=cn=manager,dc=nldap,dc=com
ldapPassword@org.sakaiproject.user.api.UserDirectoryProvider=sakai
log.config.count=1
log.config.1=DEBUG.edu.amc.sakai.user.JLDAPDirectoryProvider
载入entry
命令是ldapadd -f sldap.conf -l user.ldif
user.ldif文件主要部分
dn: dc=nldap,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: nldap
dc: nldap
dn: cn=manager,dc=nldap,dc=com
objectclass: organizationalRole
cn: manager
dn: uid=wangqian,dc=nldap,dc=com
uid: wangqian
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
mail: wangqian@sina.com
userPassword: test
givenName: Qian
displayName: student
sn: Qian
cn: wangqian
注意到前面的sladp.conf中的index行,可以发现为了查询entry需要把属性列在index中。然后可以用命令
ldapsearch -h localhost -p 389 -b "dc=nldap,dc=com" cn=wangqian即可。如果不能工作,说明配置有误,需要检查更改。
然后再在sakai-src\providers下smaven sakai 即可。
与登录时用户名对应的属性(attribute)是cn,登录密码对应的是userPassword。其次,sakai用户的Last Name, First Name和email依次对应的ldap entry的attribute分布是sn, givename和mail(这些对应信息可以在jldap-beans.xml做相应修改)。用户类型默认的是student。
现在需要LDAP来统一管理和认证用户的信息,所以需要sakai与ldap密切整合。我们选用的ldap版本是openLDAP。
可以直接下载windows 版的安装程序,默认安装就好,有些版本会自动地把Berkeyle DB 也安装好。我安装版本是openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe,也就自动安装好了Berkeyle DB。最主要的工作是配置slapd.conf。配置好后,运行slapd -d 256即可察看是否成功。256是记录日志的等级(0 - 256),具体的说明可以参看官方网站。我选用的provider是Alternative JLDAP Providers,可以从sakai网站下载整个project,然后替换掉以前的providers即可。
slapd.conf需要根据sakai的需要做配置。主要配置如下所示:
slapd.conf片断
suffix "dc=nldap,dc=com"
rootdn "cn=manager,dc=nldap,dc=com"
rootpw {MD5}lUbTrx0LmzDXkyabcdeOA==
index cn,sn,uid,mail,displayName eq
access to attrs=userPassword
by self write
by anonymous auth
by dn.base="cn=manager,dc=nldap,dc=com" write
by * none
access to *
by self write
by dn.base="cn=manager,dc=nldap,dc=com" write
by * read
sakai-src\providers\component\src\webapp\WEB-INF\jldap-beans.xml片断
<bean id="org.sakaiproject.user.api.UserDirectoryProvider"
class="edu.amc.sakai.user.JLDAPDirectoryProvider" init-method="init" destroy-method="destroy" singleton="true">
<property name="ldapHost">
<value>127.0.0.1</value>
</property>
<property name="ldapPort">
<value>389</value>
</property>
<property name="ldapUser">
<value>cn=manager,dc=nldap,dc=com</value>
</property>
<property name="ldapPassword">
<value>mypassword</value>
</property>
<property name="basePath">
<value>cn=manager,dc=nldap,dc=com</value>
</property>
<property name="caseSensitiveCacheKeys">
<value>false</value>
</property>
<property name="updateUserAfterAuthentication">
<value>true</value>
</property>
<property name="ldapAttributeMapper">
<ref bean="edu.amc.sakai.user.LdapAttributeMapper" />
</property>
</bean>
<bean id="edu.amc.sakai.user.LdapAttributeMapper class="edu.amc.sakai.user.SimpleLdapAttributeMapper"
init-method="init" singleton="true">
<property name="attributeMappings">
<map>
<entry key="login"><value>cn</value></entry>
<entry key="firstName"><value>givenName</value></entry>
<entry key="lastName"><value>sn</value></entry>
<entry key="email"><value>mail</value></entry>
<entry key="groupMembership"><value>displayName</value></entry>
</map>
</property>
<property name="userTypeMapper">
<ref bean="edu.amc.sakai.user.EmptyStringUserTypeMapper" />
</property>
</bean>
sakai.properties片断
ldapHost@org.sakaiproject.user.api.UserDirectoryProvider=127.0.0.1
ldapPort@org.sakaiproject.user.api.UserDirectoryProvider=389
basePath@org.sakaiproject.user.api.UserDirectoryProvider=dc=nldap,dc=com
ldapUser@org.sakaiproject.user.api.UserDirectoryProvider=cn=manager,dc=nldap,dc=com
ldapPassword@org.sakaiproject.user.api.UserDirectoryProvider=sakai
log.config.count=1
log.config.1=DEBUG.edu.amc.sakai.user.JLDAPDirectoryProvider
载入entry
命令是ldapadd -f sldap.conf -l user.ldif
user.ldif文件主要部分
dn: dc=nldap,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: nldap
dc: nldap
dn: cn=manager,dc=nldap,dc=com
objectclass: organizationalRole
cn: manager
dn: uid=wangqian,dc=nldap,dc=com
uid: wangqian
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
mail: wangqian@sina.com
userPassword: test
givenName: Qian
displayName: student
sn: Qian
cn: wangqian
注意到前面的sladp.conf中的index行,可以发现为了查询entry需要把属性列在index中。然后可以用命令
ldapsearch -h localhost -p 389 -b "dc=nldap,dc=com" cn=wangqian即可。如果不能工作,说明配置有误,需要检查更改。
然后再在sakai-src\providers下smaven sakai 即可。
与登录时用户名对应的属性(attribute)是cn,登录密码对应的是userPassword。其次,sakai用户的Last Name, First Name和email依次对应的ldap entry的attribute分布是sn, givename和mail(这些对应信息可以在jldap-beans.xml做相应修改)。用户类型默认的是student。