LDAP集成Nextcloud 部署

LDAP集成Nextcloud 部署教程

介绍

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

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

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

安装LDAP

演示环境

- Ubuntu 16.04

- Nextcloud 12.03

- 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

在打开的文件中,将BASE和URI两行前的注释去掉,然后在修改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,这不成问题。我会在后面的文章中详细地介绍这一功能,以及其它的单点登录的方案。

原文地址:http://blog.51cto.com/8823918/2140414

时间: 2024-10-27 11:40:42

LDAP集成Nextcloud 部署的相关文章

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成] 标签(空格分隔): Jenkins 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试 新建部署代码项目 点击新建 这里只需要写一下描述 执行Shell脚本 温馨提示:执行命令主要涉及的是权限问题,我们要搞明

Ubuntu通过LDAP集成AD域账号登录(libnss-ldap方式)

Ubuntu通过LDAP集成AD域账号登录(libnss-ldap方式): # apt-get install libnss-ldap   (中间直接回车,忽略) # vi /etc/nsswitch.conf passwd: files ldap group:  files ldap shadow: files ldap :wq # vi /etc/ldap.conf base dc=ming,dc=com uri ldap://10.0.0.2 binddn cn=ldapadmin,cn=

apache+svn+ldap集成

apache+svn搭建方式如下:http://www.cnblogs.com/uglyliu/p/6914056.html SVN和ldap集成,我用的方式只需要更改 /etc/http/conf.d/subversion.conf 配置如下: <Location /svn/> DAV svn SVNListParentPath on SVNParentPath /home/svndata AuthBasicAuthoritative on AuthType Basic AuthName &

CentOS 6通过ldap集成AD域账号(nslcd方式)

CentOS 6通过ldap集成AD域账号(nslcd方式): CentOS 6默认有安装nss-pam-ldapd软件(rpm -qa nss-pam-ldapd,rpm -ql nss-pam-ldapd) vi /etc/nsswitch.conf passwd: files ldapgroup: files ldapshadow: files ldap:wq vi /etc/nslcd.conf binddn cn=aa,cn=users,dc=ming,dc=com (aa为普通AD账

vsts + XX云服务器构建netcore+docker持续集成交付部署

持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试(这个要看情况了是否需要) 持续交付(Continuous Delivery) 持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中.比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试

ldap集成jenkins

jenkins版本:2.5.3,ldap插件:1.15 jenkins ldap支持需要安装ldap plugin,强烈建议插件安装版本为1.15及以上(支持ldap 配置测试) 安装插件: 系统管理-->管理插件-->可选插件,搜索LDAP,如果没有1.15版本的可安装,可以去 https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ldap/ 下载 上传安装 配置ldap前请先备份下jenkins的配置文件(/home/deploy/.je

centos7下使用gitlab+shell实现CI/CD持续集成持续部署

centos7下使用gitlab+shell实现CI/CD持续集成持续部署 流程解释:第一步ci客户端向gitlab服务器注册自己,建立通信,第二步,当项目分支代码收到变化时,自动触发yml脚本,yml脚本根据注册时带入的runner通知客户端deploy脚本更新代码,同时执行编译和部署过程,deploy脚本写代码集成相关操作,具体见下面的讲解 CI部分 第一步:准备三台虚拟机S,C1,C2,我这里的三台机子都是全新的,除了系统文件没有其他文件 S:内存是4G用于装gitlab服务器 IP:19

spring-boot项目的docker集成化部署(一)

目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker集成化部署 前言 据说流行的微服务和docker一起,更配哦!接下来,使用简单spring-boot项目演示docker的集成化部署的案例,在看过微笑的博客觉得不过瘾,自己动手,下面的方案与Devops的方式比较接近:希望搭建理解这种思路. 基本思路与方案 开发者push到git服务器 Jenkin

CI/CD持续集成/持续部署 敏捷开发

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用. 1,CI/CD持续集