LDAP集成Nextcloud 部署

LDAP集成Nextcloud 部署教程php

介绍html

LDAP是一种轻量目录访问协议,能够以树状的层次结构存储数据。经常使用于信息的集中存放、单点登陆等等。数据库

在实际环境中,Nextcloud每每会与其它应用混合使用,而Nextcloud中的用户与其它的用户系统是独立的,也就须要另行添加一个帐户,较为繁琐,也容易出现两个应用中用户没法对应的状况,平添了管理的难度。apache

Nextcloud自带了LDAP user and group backend插件,能够将LDAP整合至Nextcloud,实现使用LDAP中存储的用户信息在Nextcloud上登陆。vim

安装LDAP服务器

演示环境网络

- Ubuntu 16.04app

- Nextcloud 12.03ide

- OpenLDAP工具

Let's go

首先安装OpenLDAP

apt-get install slapd ldap-utils


在安装过程当中会提示设置管理员密码,这个密码将是cn=admin,dn=example,dn=com的密码

从新输入以确认密码:

完成密码的设置后,稍等一会,OpenLDAP就安装好了。

LDAP的配置

如今的LDAP服务暂时没法直接使用,咱们须要作一些配置。

编辑/etc/ldap/ldap.conf文件

vim /etc/ldap/ldap.conf

在打开的文件中,将BASEURI两行前的注释去掉,而后在修改BASE后面的内容为:

BASE    dc=dreampacific,dc=cn

若是你是第一次接触LDAP:

``dc=dreampacific``和``dc=cn``是能够自行设置的,以上的示例的dc是根据dreampacific.cn这个域名来设置的。LDAP结构和域名系统相似。

LDAP是一个树状的结构,你能够去百度DNS迭代解析的过程,以大概地理解为何LDAP的BASE(基础)有域名的样子。

URI后面的内容修改成

URI     ldap://ldap.dreampacific.cn ldap://ldap-master.dreampacific.cn:666


而下文的URI则是指定ldap的网络位置,待会要使用这儿设置的URI进行测试,因此这里要设置能够实际访问的地址。若是你没有可用的域名,这儿能够设置为IP地址的形式:

URI     ldap://127.0.0.1 ldap://127.0.0.1:666


完成配置文件的修改后,就能够进入下一步了:

dpkg-reconfigure slapd


以后会出现这样的画面,选择“NO”

而后要求你输入一个域名,这个域名要与以前设置的BASE中dc的内容一致,但要写成域名的形式:

而后输入组织机构名称,最好与前面设置的第一个dc的内容保持一致:

最后输入以前所设置的管理员密码:

再确认一遍:

默认选择MDB:

询问当ldap卸载时是否移除旧的数据库,选择YES或NO都可。

是否移除旧的数据库,选择YES

是否容许LDAPv2协议,没有这个须要就没必要启用了:

如今LDAP的初始配置基本完成了。

测试LDAP服务

使用如下命令测试LDAP服务是否正常运转:

ldapsearch -x


若是输出相似如下的内容则为正常:

# extended LDIF # # LDAPv3 # base <dc=dreampacific,dc=cn> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # dreampacific.cn dn: dc=dreampacific,dc=cn objectClass: top objectClass: dcObject objectClass: organization o: dreampacific dc: dreampacific # admin, dreampacific.cn dn: cn=admin,dc=dreampacific,dc=cn objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2


到此LDAP的安装已完成。

LDAP服务的管理

在这儿推荐使用图形化工具管理LDAP服务,例如phpLDAPadmin。

安装phpLDAPadmin

phpLDAPadmin是一个能够在网页上管理LDAP服务的工具。

使用如下命令安装phpLDAPadmin:

apt-get install phpldapadmin


而后建立一个符号连接,将phpldapadmin导入到HTTP服务器的根目录里去:

ln -s /usr/share/phpldapadmin/ /var/www/html/phpldapadmin


而后编辑phpldapadmin的配置文件:

vim /etc/phpldapadmin/config.php


1.设置时区

在config.php文件第85行(vim中在普通模式下输入:set number显示行号)能够找到有关时区的设置,将它改成你所在的时区(Asia/Shanghai,若是无效能够换成PRC):

$config->custom->appearance['timezone'] = 'Asia/Shanghai';


2.填写LDAP服务的相关配置

在第274行后面能够依次找到如下几项配置,将后面的内容按实际状况修改:

//设置服务器名$servers->setValue('server','name','Chengye LDAP Server');//设置服务器地址,能够是域名也能够IP地址$servers->setValue('server','host','127.0.0.1');//LDAP的域名设置,按以前所设置的BASE中的内容填写$servers->setValue('server','base',array('dc=dreampacific,dc=cn'));//与上面的同样,按BASE中的内容填写$servers->setValue('login','bind_id','cn=admin,dc=dreampacific,dc=cn');


完成后保存退出。

最后重启apache:

service apache2 restart


测试并编辑LDAP中的内容

访问http://服务器ip/phpldapadmin ,能够看到以下图所示的界面,点击左侧login登陆:

能够看到默认登陆DN就是咱们在config.php中设置的值。输入以前安装LDAP时设置的密码,点击Authenticate登陆:

而后在左侧就能够看到基础的目录了,点击“+”展开:

LDAP暂时先到这里,接下来咱们将工做聚焦到Nextcloud。

Nextcloud上的配置

首先要启用Nextcloud的LDAP插件(APP),这个插件能够将LDAP中的用户信息做为登陆信息。直接到应用中启用这个插件(APP):

也可使用OCC命令启用:

sudo -u www-data php occ app:enable user_ldap


启用后,到管理->LDAP/AD整合,就能够看到与LDAP相关的配置了:

填写LDAP服务器的信息,示例以下:

(依次点击“检测基础DN”“测试基础DN”,下方出现“配置完成”则说明链接正常)

添加LDAP信息

这儿所添加的信息均为示例,实际环境中能够有所不一样,以知足不一样的需求。

回到LDAP,首先在phpLDAPadmin上建立一个组

组名咱们能够设置为NCGroup,而后点击“Create Object”:

点击“Commit”以继续:

OK,一个组就这样建立完成了。

而后再建立用户,在NCGroup下,点击“Create a child entry”:

选择“Samba: Account”:

输入基本信息:

注意:在“GID Number”选择刚刚建立的组;在“Password”中填写的密码将用于登陆Nextcloud。

在最下面点击“Create Object”,而后点击“Commit”。

完成用户的建立后,为了知足Nextcloud的要求,能够再添加一个displayName的Attribute(属性):

Add new attribute->下拉框中选择displayName,而后输入值,这个项将用于在Nextcloud中显示用户名,也可用于登陆。

填写完后拉到下面->Update Object->Update Object完成内容的添加。

完善Nextcloud的配置

回到Nextcloud的 LDAP/AD整合 中,点击“继续”,来到用户的设置。Nextcloud并不会搜索LDAP中存储的所有用户,它只会搜索拥有某一或某几个属性的用户。在LDAP中建立的用户默认拥有inetOrgPerson的属性,因此咱们这里选择为默认的inetOrgPerson便可:

点击“继续”设置登陆属性。

这儿的登陆属性将用于Nextcloud的登陆,在这儿能够设置用户可使用LDAP中的属性登陆,勾选第一条“LDAP/AD用户名”则使用uid和samaccountname登陆;勾选第二条“LDAP/AD邮箱地址”则使用mailPrimaryAddress和mail属性登陆。你也能够选择使用其它的属性,好比displayName:

点击“继续”,在群组的设置中选择默认便可。

如今的LDAP的配置基本完成了。到Nextcloud的用户管理页面中看看是否显示了LDAP中的用户:

咱们能够看到,LDAP中的用户“FikGreg”已经显示了,可是在“用户名”一栏倒是乱码同样的东西。由于LDAP并无给Nextcloud提供用以显示“用户名”的信息,因此Nextcloud智能用一串随机字符来代替。

咱们只要定义如下哪一个属性能够用来显示用户名就能够了。到“专家”->内部用户名中,设置能够做为“用户名”的属性,例如“displayName”。而后点击“清除用户-LDAP用户映射”:

刷新用户管理页面,字符串更正成了dispalyName:

测试

最后咱们来试试能不能用这个LDAP用户登陆Nextcloud。

由于咱们以前将“dispalyName”做为了登陆属性,因此这儿用dikplayName的值登陆,密码为建立用户时Password的值:

登陆成功!

最后

LDAP和Nextcloud的LDAP插件拥有很大的灵活性,本文只是以示例的形式演示了将LDAP集成进Nextcloud的过程。你彻底能够根据实际须要变动一些东西,好比登陆名的属性,组属性等等。若是你比较了解LDAP,这不成问题。我会在后面的文章中详细地介绍这一功能,以及其它的单点登陆的方案。

相关文章
相关标签/搜索