打造面向ownCloud的雙因子驗(yàn)證系統(tǒng)
譯文ownCloud這個(gè)系統(tǒng)用來存儲(chǔ)你本人或你公司不在別人計(jì)算機(jī)(即“云端”)的數(shù)據(jù),而是在你自己的歸自己控制的計(jì)算機(jī)上的數(shù)據(jù)。privacyIDEA這個(gè)系統(tǒng)用來為你自己網(wǎng)絡(luò)中、而不是任何身份提供者的雙因子驗(yàn)證管理驗(yàn)證設(shè)備,因而可以讓你牢牢控制你的身份及用戶的身份。
前提條件
假設(shè)你已經(jīng)讓ownCloud 8系統(tǒng)搭建并運(yùn)行起來。外頭有一些相當(dāng)好的例子。你還可以在該網(wǎng)站上看一下這篇文章:https://www.howtoforge.com/tutorial/how-to-install-owncloud-8-with-nginx-and-mariadb-on-centos-7/,介紹了如何安裝ownCloud 8以及nginx。
另外,我還假設(shè)你在運(yùn)行一個(gè)privacyIDEA系統(tǒng)。本文并不涉及privacyIDEA的安裝。你可以在這里找到一篇文章:https://www.howtoforge.com/two-factor-authentication-with-otp-using-privacyidea-and-freeradius-on-centos,介紹如何將privacyIDEA安裝到CentOS上,你也可以使用說明文檔處的安裝指示:http://privacyidea.readthedocs.org/en/latest/installation/index.html。
務(wù)必要注意:你不需要在同一臺(tái)服務(wù)器上運(yùn)行privacyIDEA和ownCloud。如果將privacyIDEA作為驗(yàn)證系統(tǒng)安裝在一臺(tái)服務(wù)器上,再對照該privacyIDEA配置ownCloud等其他應(yīng)用程序,就能充分發(fā)揮這套系統(tǒng)的潛力。這還包括這個(gè)優(yōu)勢:你不需要為ownCloud管理驗(yàn)證設(shè)備,不需要為第二個(gè)應(yīng)用程序管理驗(yàn)證設(shè)備,不需要為第三個(gè)應(yīng)用程序管理驗(yàn)證設(shè)備,以此類推。你會(huì)發(fā)現(xiàn),如果你有幾個(gè)應(yīng)用程序,又有兩個(gè)以上的用戶,這個(gè)解決方案體現(xiàn)了其優(yōu)勢。不過當(dāng)然,它在規(guī)模較小的場景下自然也適用。
務(wù)必要注意:ownCloud privacyIDEA應(yīng)用程序處于早期開發(fā)階段。所以你給予的任何反饋都受到熱烈歡迎,將有助于改善這個(gè)工具。歡迎通過(https://github.com/privacyidea/privacyidea/issues)或通過谷歌群組(https://groups.google.com/forum/#!forum/privacyidea)給予反饋。
將privacyIDEA連接到ownCloud數(shù)據(jù)庫
準(zhǔn)備數(shù)據(jù)庫
privacyIDEA確實(shí)有一個(gè)條件。ownCloud用戶必須為privacyIDEA所熟知,或者privacyIDEA為ownCloud用戶所熟知,你在privacyIDEA中分配令牌的用戶也必須在ownCloud中。
你可以運(yùn)行這樣一種環(huán)境:你的用戶位于LDAP目錄中,不過在該例子中,我們只是使用現(xiàn)有的ownCloud SQL用戶表。
務(wù)必要注意:如果你在不同的服務(wù)器上運(yùn)行privacyIDEA和ownCloud,就需要授予訪問SQL數(shù)據(jù)庫的權(quán)限。如果是MySQL/MariaDB,你需要相應(yīng)改動(dòng)/etc/mysql/my.cnf中的綁定地址,就像這樣:
bind-address = 0.0.0.0
此外,你還需要增添基于MySQL的訪問權(quán)限:
grant all privileges on owncloud.* to "ocuser"@"privacyIDEA-Server" identified by "password";
現(xiàn)在,MySQL用戶“ocuser”就可以從privacyIDEA服務(wù)器訪問ownCloud服務(wù)器上的數(shù)據(jù)庫了。
提醒:通往MySQL服務(wù)器的網(wǎng)絡(luò)流量未經(jīng)過加密。如果你面臨的是這種場景,我們強(qiáng)烈建議安裝TLS。
將privacyIDEA連接到ownCloud
構(gòu)建用戶解析器(User Resolver)
現(xiàn)在我們將privacyIDEA連接到ownCloud,那樣privacyIDEA就能知道用戶。我們在Config(配置)→ Users(用戶)處,創(chuàng)建一個(gè)新的用戶解析器。
你可以點(diǎn)擊按鈕ownCloud,它應(yīng)該會(huì)預(yù)設(shè)數(shù)據(jù)庫屬性映射中的所有必要字段。
然后,你可以點(diǎn)擊Test SQL Resolver(測試SQL解析器),可以看看是否一切正常。
構(gòu)建范圍
現(xiàn)在你可以進(jìn)入到Config(配置)→ Realms(范圍),即可從解析器創(chuàng)建一個(gè)默認(rèn)范圍。
你現(xiàn)在應(yīng)該會(huì)看到選項(xiàng)卡Users(用戶)中的ownCloud用戶,能夠?yàn)檫@些用戶登記令牌。
登記谷歌驗(yàn)證器
privacyIDEA支持一系列廣泛的令牌,你可以在此找到:http://privacyidea.readthedocs.org/en/latest/configuration/tokens/supported.html。
我們會(huì)迅速登記谷歌驗(yàn)證器(Google Authenticator),以此作為一個(gè)簡單的例子。
進(jìn)入到用戶視圖,選擇一個(gè)用戶,即可查看用戶詳細(xì)信息。你在這里可以點(diǎn)擊按鈕Enroll New Token(登記新令牌)。
在登記對話框中,你可以選擇令牌類型;視令牌類型而定,你需要輸入不同的詳細(xì)信息。不過在這個(gè)例子中,我們使用了默認(rèn)令牌類型HOTP。在頁面底部,你可以輸入OTP PIN。
點(diǎn)擊Enroll Token(登記令牌)。
令牌已登記,你會(huì)看到一個(gè)二維碼,可以用谷歌驗(yàn)證器應(yīng)用程序來掃描該二維碼。
其他令牌類型以其他方式來登記,這不在本教程的探討范圍之內(nèi)。想了解更多信息,請參閱privacyIDEA說明文檔:http://privacyidea.readthedocs.org/en/latest/configuration/token_config.html。
好了,ownCloud用戶已被分配了令牌。你可以為其他的ownCloud用戶重復(fù)這個(gè)過程。
獲得ownCloud應(yīng)用程序
首先,你需要下載ownCloud privacyIDEA應(yīng)用程序。
你可以在此下載該應(yīng)用程序:https://github.com/privacyidea/privacyidea/tree/master/authmodules/ownCloud。需要將目錄user_privacyidea拷貝到你的ownCloud directory apps/。假設(shè)你已將ownCloud安裝到/var/www/owncloud,那樣你***會(huì)看到類似這樣的結(jié)構(gòu):
root@owncloud:~# ls /var/www/owncloud/apps/user_privacyidea/ -l
-rw-rw-r-- 1 root root 1671 Jun 25 15:05 adminSettings.php
drwxrwxr-x 2 root root 4096 Jun 25 15:17 appinfo
drwxrwxr-x 2 root root 4096 Jun 25 15:17 img
drwxrwxr-x 2 root root 4096 Jun 25 15:17 js
drwxrwxr-x 2 root root 4096 Jun 25 15:17 lib
drwxrwxr-x 2 root root 4096 Jun 25 15:17 templates
privacyIDEA應(yīng)用程序已安裝成ownCloud用戶后端程序,將充當(dāng)你現(xiàn)有的用戶后端程序的覆蓋層,能夠直接處理驗(yàn)證請求,為登錄機(jī)制添加第二個(gè)因子。
配置ownCloud應(yīng)用程序
進(jìn)入到Apps → not Enabled,啟用該應(yīng)用程序。
然后進(jìn)入到Y(jié)our User → Admin,配置privacyIDEA應(yīng)用程序。
你需要提供privacyIDEA服務(wù)器的URL。你應(yīng)該運(yùn)行使用可行證書的privacyIDEA服務(wù)器。如果在安裝過程中,你沒有可信證書,就不要勾選復(fù)選框Verify the SSL certificate of the privacyIDEA server(核實(shí)privacyIDEA服務(wù)器的SSL證書)。
為了避免將你鎖在外面,你可以勾選復(fù)選框Also allow users to authenticate with their normal password(還允許用戶用普通密碼來驗(yàn)證)。這種情況下,如果privacyIDEA驗(yàn)證失敗,可以對照底層的ownCloud用戶后端程序來驗(yàn)證用戶。在生產(chǎn)環(huán)境下,你應(yīng)該不要勾選該復(fù)選框。
桌面客戶端在一次性密碼方面當(dāng)然會(huì)有問題。如果你使用這種客戶端,應(yīng)該勾選復(fù)選框Allow API access to remote.php with static password(允許使用靜態(tài)密碼,通過API訪問remote.php)。這種情況下,來自桌面客戶端的驗(yàn)證請求(由remote.php負(fù)責(zé)識(shí)別)就不會(huì)對照privacyIDEA來驗(yàn)證,而是對照底層的用戶后端程序來驗(yàn)證。
***,如果一切正常,你只要勾選復(fù)選核框Use privacyIDEA to authenticate the users(使用privacyIDEA來驗(yàn)證用戶),就可以激活雙因子驗(yàn)證了。
登錄進(jìn)入到ownCloud
激活了privacyIDEA應(yīng)用程序后,ownCloud的登錄屏幕并不會(huì)出現(xiàn)變化。
想登錄,你就需要輸入用戶名;在密碼字段,你需要輸入OTP PIN和谷歌驗(yàn)證器生成的OTP值。
英文:Two Factor Authentication for ownCloud