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





























