sakai integration with LDAP

本文介绍如何将Sakai与LDAP进行整合,包括安装OpenLDAP、配置slapd.conf及jldap-beans.xml等关键步骤。通过整合,实现用户信息的统一管理和认证。
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。
采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值