kanboard的LDAP认证实现

Kanboard是一个开源的看板管理项目,官方文档在此 Kanboard Documentation

开启openldap服务器

我们搭建好了openldap服务器之后,打开服务。(如果不知道怎么搭建openldap的,可以看这里点击打开链接)

docker run --name openldap -p 389:389 --d osixia/openldap  #启动openldap服务

搭建kanboard服务器

跟搭建openldap服务器一样,搭建kanboard服务器同样也有两种方式,源码安装docker搭建

因为本文的主要内容是介绍LDAP在kanboard的实现,所以简单明了的用docker来搭建kanboard服务器

docker pull kanboard/kanboard
docker run --name  kanboard -p 8000:80--link openldap:ldaphost  kanboard/kanboard #启动kanboard容器

关于上述的link参数,link就是在两个容器之间建立一种父子关系,父container中的web,可以得到子container上的信息。--link=container_name:name,这个可以在此容器的/etc/hosts文件中添加一个额外的name主机名。

kanboard的LDAP配置

docker exec -it kanboard bash  #进入容器里面
vi /var/www/app/config.php

将下面内容添加到此文件中

// 启用LDAP认证(默认是false)
define('LDAP_AUTH', true);

// LDAP服务器主机名
define('LDAP_SERVER', 'ldaphost');

// LDAP服务器端口(默认是389)
define('LDAP_PORT', 389);

// 默认地,要求验证ldaps:// 形式的URL,设置为false则跳过验证
define('LDAP_SSL_VERIFY', false);

// 启用LDAP TLS认证
define('LDAP_START_TLS', false);

// 默认kanboard将ldap用户名小写以防止多重用户(数据库是区分大小的)
// 如果你想保留该案例,设置为true
define('LDAP_USERNAME_CASE_SENSITIVE', false);

// LDAP绑定类型: "anonymous", "user" or "proxy" 这个用来登陆LDAP服务器
define('LDAP_BIND_TYPE', 'proxy');

// proxy模式的LDAP 用户名
// user模式的LDAP匹配的用户名
define('LDAP_USERNAME', 'cn=admin,dc=example,dc=org');

// proxy模式的LDAP密码
define('LDAP_PASSWORD', 'admin');

// LDAP用户的DN
// Example for ActiveDirectory: CN=Users,DC=kanboard,DC=local
// Example for OpenLDAP: ou=People,dc=example,dc=com
define('LDAP_USER_BASE_DN', 'ou=users,dc=example,dc=org');

// 搜寻用户帐号时的LDAP匹配模式
// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
// Example for OpenLDAP: 'uid=%s'
define('LDAP_USER_FILTER', '(|(uid=%s)|(mail=%s)');

// username的LDAP属性
// Example for ActiveDirectory: 'samaccountname'
// Example for OpenLDAP: 'uid'
define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid');

// user full name的LDAP属性
// Example for ActiveDirectory: 'displayname'
// Example for OpenLDAP: 'cn'
define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn');

// 用户mail对应的LDAP属性
define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail');

// 在用户的资料中寻找group的LDAP属性
define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof');

// LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto
define('LDAP_USER_ATTRIBUTE_PHOTO', '');

// LDAP attribute for user language, example: 'preferredlanguage'
// Put an empty string to disable language sync
define('LDAP_USER_ATTRIBUTE_LANGUAGE', '');

// 允许kanboard自动创建LDAP用户
define('LDAP_USER_CREATION', true);

// administrator的LDAP DN
// Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local
define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=groups,dc=example,dc=org');

// managers的LDAP DN
// Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local
define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managerse,ou=groups,dc=example,dc=org');

// 启动LDAP组权限
// The end-user will be able to browse LDAP groups from the user interface and allow access to specified projects
define('LDAP_GROUP_PROVIDER', true);

// groups的LDAP 基础DN
define('LDAP_GROUP_BASE_DN', 'ou=groups,dc=example,dc=org');

// LDAP组过滤
// Example for ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*))
define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s))');

// LDAP用户过滤
// If this filter is configured, Kanboard will search user groups in LDAP_GROUP_BASE_DN
// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))');

// 组名对应与LDAP的属性
define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');

用户User的LDIF例子

dn: uid=manager,ou=Users,dc=kanboard,dc=local
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: manager
sn: Lastname
givenName: Firstname
cn: Kanboard Manager
displayName: Kanboard Manager
mail: [email protected]
userPassword: password
memberOf: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local

小组的LDIF例子

扫描二维码关注公众号,回复: 2386417 查看本文章
dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local
objectClass: top
objectClass: groupOfNames
cn: Kanboard Managers
member: uid=manager,ou=Users,dc=kanboard,dc=local

将LDIF导入到openldap中、按照上述资料配置好kanboard,即可完成kanboard的LDAP认证。

猜你喜欢

转载自blog.csdn.net/ximingren/article/details/80689560