如何集成DAViCal的LDAP认证?
- By : Will
- Category : Calendar
- Tags: DAViCal,LDAP
1 基础知识
1.1 LDAP身份验证的简介
– DAViCal支持LDAP身份验证
– DAViCal支持LDAP 0.9.3以上的版本
– DAViCal支持LDAP的类位于“inc/drivers_ldap.php”
– DAViCal支持LDAP需要PHP的LDAP模块
1.2 实现原理
– 通过同步LDAP的用户身份并映射的方式实现验证
– 数据库不会保存LDAP的用户和密码,LDAP用户丢失将无法访问日历和联系人
– 如果LDAP缺少用户身份,日历和联系人不会自动清除(标记为不活跃)
1.3 支持的功能
– 支持OpenLDAP和ActiveDirectory
– 支持SSL、TLS和Unix套接字的URI表示,例如,
— 基于Unix socket的ldapi://
— 基于SSL的ldaps://:636
— 基于TLS的ldap://:389
– 支持匿名和非匿名绑定
– 完全不依赖于当前的状态(属性映射)
– 组映射,详细请参阅,LDAP_groups
– 支持LDAP的筛选功能(基于最小的带宽与资源考虑)
– 支持本机应用程序身份验证和LDAP
– 支持LDAP连接超时持续时间定义
– 支持用户通过CRON脚本同步
2 最佳实践
2.1 环境部署
以下实践需要有DAViCal的服务端环境,如你需要请按如下教程部署,
https://www.cmdschool.org/archives/3745
2.2 增加LDAP模块
cd ~/php-7.2.11/ext/ldap/ phpize ./configure make make install
根据提示安装所需的模块,
yum install -y openldap-devel ln -s /usr/lib64/libldap.so /usr/lib/
加载所需的模块
echo extension=ldap.so >> /etc/php.ini
重启服务使配置生效,
systemctl restart httpd.service
你可用以下命令验证模块的加载,
php -m
2.3 确认ldap的结果集合
ldapsearch -x -h 10.168.0.155 -p 389 -W -b "ou=People,dc=cmdschool,dc=org" "ou=*" ldapsearch -x -h 10.168.0.155 -p 389 -W -b "ou=People,dc=cmdschool,dc=org" "uid=*"
你可能需要预先安装如下工具,
yum install -y openldap-clients
2.4 部署LDAP服务(可选)
此处使用389服务作为向导部署标准的LDAP服务,如果你已经有389服务,请直接跳过,
https://www.cmdschool.org/archives/250
另外,你也可以使用标准的OpenLDAP服务,只是配置的细微之处有点区别,
https://www.cmdschool.org/archives/3563
2.5 集成LDAP服务
vim /etc/davical/config.php
在之前的配置基础上,加入如下配置,
$c->authenticate_hook['call'] = 'LDAP_check'; $c->authenticate_hook['config'] = array( 'host' => '10.168.0.155', 'port' => '389', 'bindDN'=> 'cn=admin,cn=config', 'passDN'=> '******', 'baseDNUsers'=> 'ou=People,dc=cmdschool,dc=org', 'filterUsers' => 'uid=*', 'baseDNGroups' => 'ou=People,dc=cmdschool,dc=org', 'filterGroups' => 'ou=*', 'mapping_field' => array('username' => 'uid', 'modified' => 'joindate', 'fullname' => 'cn' , 'email' =>'mail' ), 'group_mapping_field' => array( 'username' => 'ou', 'modified' => '', 'fullname' => 'ou' , 'members' => '' ), 'group_member_dnfix' => true, 'format_updated'=> array('Y' => array(0,4), 'm' => array(4,2), 'd' => array(6,2), 'H' => array(8,2), 'M' => array(10,2), 'S' => array(12,2)), 'scope' => 'subtree', ); include_once('drivers_ldap.php');
注意:字段的对应关系请根据自己的需求定义,这里只是做一个演示。
2.6 登录测试
In Windows Client,
http://davical.cmdschool.org
注:请使用ldap的账号和密码登陆
2.7 错误调试与问题反馈
如果登录异常且你需要调试,请使用如下命令查看日志,
tail -f /var/log/httpd/error_log
或者可通过如下链接向官方反馈问题或bug,
https://gitlab.com/davical-project
参阅文档:
===============
https://wiki.davical.org/index.php/Configuration/Authentication_Settings
https://wiki.davical.org/index.php/Configuration/Authentication_Settings/LDAP
没有评论