1. 程式人生 > >LDAP集成Nextcloud 部署

LDAP集成Nextcloud 部署

ica 打開 tom restart b16 number 管理員密碼 完成 5-0

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

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


LDAP集成Nextcloud 部署