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,這不成問題。我會在後面的文章中詳細地介紹這一功能,以及其它的單點登陸的方案。

相關文章
相關標籤/搜索