如何集成DAViCal的LDAP认证?

Calendar

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

没有评论

发表回复

Calendar
如何配置AgenDav?

1 前提条件 由于理解以下配置需要先有AgenDav环境,如果你需要,请按照如下教程搭建环境, ht …

Calendar
如何部署AgenDAV?

1 基础知识 1.1 简介 AgenDAV是一个CalDAV Web客户端,它具有AJAX接口,允许 …

Calendar
如何部署DAViCal?

1 基础知识 1.1 DAViCal的简介 – DAViCal是一个日历共享服务器 &# …