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