一、概述
WordPress 是國際知名的開源部落格軟體和內容管理系統。全球約30%的網站(7億5000個)是使用 WordPress 架設的。由於 WordPress 具備強大的模板系統、靈活的外掛機制和優秀的外掛生態,很多使用者不但使用它來搭建部落格網站和內容管理系統,還用它來建設各類商業網站和業務系統。
無論使用 WordPress 架設哪類系統,為使用者提供登入認證功能都是一項基礎且普遍的需求。然而,WordPress 平臺自帶的登入認證與使用者管理功能十分有限,僅支援基於賬號密碼的認證方式,僅能透過郵箱、暱稱等有限的屬性對使用者進行標識,且不具備對使用者登入活動的統計分析和審計能力。
騰訊數字身份管控平臺(公眾版)(以下簡稱 Tencent CIAM),用於管理公眾網際網路使用者的賬號、註冊和認證規則,打通分散的使用者資料孤島、幫助應用更好地進行使用者識別與畫像。
本文介紹如何使用 Tencent CIAM 對 WordPress 站點進行登入保護。讀者將會看到,由於 Tencent CIAM 提供了方便、快捷的配置功能以及對網際網路認證協議的標準化支援,WordPress 管理者無需編寫一行程式碼,只需透過簡單的配置操作即可實現對 WordPress 站點登入認證和使用者管理能力的增強和加固。
二、WordPress 的預設登入功能
假設我們已經部署好了一個 WordPress 站點,其根路徑是 https://WORDPRESS.SITE。首先我們來看看 WordPress 平臺自帶的使用者管理和登入認證功能。
使用管理員登入後臺後,可以透過左側選單的 使用者 -> 所有使用者 來檢視 WordPress 的使用者列表,以及檢視使用者詳情、維護使用者資訊、重置密碼。
WordPress 預設的登入頁面只支援賬號密碼認證方式。
三、使用 Tencent CIAM 接管 WordPress 登入
Tencent CIAM 支援應用系統基於標準 OpenID Connect (OIDC) 協議接入,支援賬號密碼、簡訊OTP、郵箱OTP、微信PC掃碼、微信小程式登入、支付寶登入等多種認證方式,支援使用者透過表單註冊或首次登入自動註冊,且透過騰訊雲控制檯提供了便捷的介面對以上功能進行靈活的定製。
安裝 WordPress OIDC 外掛
我們的 WordPress 站點將透過標準 OIDC 協議與 Tencent CIAM 對接。因此,我們首先安裝並啟用 WordPress 的 OIDC 外掛。在 WordPress 後臺選擇 外掛 -> 安裝外掛,搜尋並安裝 OpenID Connect Generic Client 外掛。
啟用外掛,再次訪問登入頁面時,發現頁面上部增加了一個按鈕 Login with OpenID Connect 。
由於還未對 Tencent CIAM 進行配置,此功能暫時還不可用。接下來我們配置 CIAM 。
建立 Tencent CIAM 應用
Tencent CIAM 的官方網址是 https://cloud.tencent.com/product/ciam。在開始使用 Tencent CIAM 前,我們需要先登入騰訊雲,開通 CIAM 服務,並在 CIAM 中建立一個使用者目錄。假設我們已經建立了一個域名為 https://dev-wordpress.portal.tencentciam.com 的使用者目錄(使用者目錄的域名可以在 CIAM 控制檯 個性化設定 -> 域名設定 中檢視到)。
使用者目錄是 Tencent CIAM 的一個基礎“容器”,使用者的賬號資訊、使用者訪問的應用系統的相關配置、使用者的認證方式等都將在使用者目錄中進行儲存與配置。接下來,需要有一個使用者目錄中的應用來扮演 WordPress 站點的角色,實現 WordPress 與 Tencent CIAM 的對接。在 CIAM 的 應用管理 欄目中新建或使用一個現有應用,完成如下配置。
l 基本資訊
l 應用型別選擇 Web應用
l 根據實際情況填寫應用名稱、所屬行業和應用描述
應用基本資訊
l 引數配置
l Redirect URI 填 https://WORDPRESS.SITE/wp-admin/admin-ajax.php?action=openid-connect-authorize
l 請使用您的 WordPress 站點根路徑替換 https://WORDPRESS.SITE。下同。
l Logout Redirect URI 填站點根路徑 https://WORDPRESS.SITE
l 其他配置使用預設值
l 流程配置
l 啟用登入流程,首選認證源選擇系統自帶的 賬號密碼認證,關聯認證源暫不設定,Claims 是使用者登入成功後 CIAM 將提供給 WordPress 的使用者資訊欄位,此處我們選擇常用的 使用者暱稱、使用者名稱稱、 郵箱地址 和 性別。
l 啟用註冊流程。認證屬性選擇 郵箱地址 和 使用者名稱稱 ,普通屬性將 使用者暱稱 作為必填項,性別 作為選填項。
l 其他流程和協議管理暫時關閉。
完成以上配置後,回到 應用管理 欄目的列表頁面,啟用該應用。
配置 WordPress OIDC 外掛
接下來配置 WordPress OIDC 外掛。在 WordPress 後臺選擇 設定 -> OpenID Connect Client,完成如下配置。
l Login Type 選擇預設的 OpenID Connect button on login form
l Client ID 和 Client Secret Key 分別填入 CIAM 應用基本資訊頁面的 Client ID 和 Client Secret OpenID Scope 填 openid
l Login Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/oauth2/authorize
l 請使用您的 CIAM 使用者目錄域名替換掉 https://dev-wordpress.portal.tencentciam.com。下同。
l Userinfo Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/userinfo
l Token Validation Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/oauth2/token
l End Session Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/logout?client_id=CLIENT_ID&logout_redirect_uri=https://WORDPRESS.SITE
l 請分別使用您的 CIAM 使用者目錄域名、CIAM 應用 Client ID、和 WordPress 站點根路徑替換以上的 https://dev-wordpress.portal.tencentciam.com、CLIENT_ID 和 https://WORDPRESS.SITE。
l Identity Key 填預設的 sub
l Nickname Key 填 nickname
l Email Formatting 填 {email}
l 其他設定使用預設值或留空。
執行效果
至此,我們的 WordPress 站點已經可以使用 Tencent CIAM 登入了。再次訪問 WordPress 登入頁,點選 Login with OpenID Connect,在彈出的 CIAM 登入頁上使用現有使用者登入或註冊新使用者。
登入成功後,將自動跳轉回登入前訪問的 WordPress 頁面。
檢視使用者資訊和登入日誌
使用 Tencent CIAM 接管 WordPress 登入後,我們可以在 CIAM 控制檯檢視已註冊使用者的列表、最近登入時間和使用者詳細資訊,還可以編輯使用者詳情、重置使用者密碼或鎖定、凍結、刪除使用者。
在控制檯的 審計管理 欄目可以檢視使用者登入的詳細情況。
四、進階使用
允許使用者以更多方式登入
Tencent CIAM 支援使用者以多種方式進行登入認證。接下來,我們為 WordPress 站點增加郵箱OTP的登入方式。
透過 CIAM 控制檯的 認證管理 -> 通用認證源 -> 新建認證源 -> 郵箱OTP認證 來建立一個新的郵箱OTP認證源。
填寫認證源基本資訊
配置認證源策略
建立後,在認證源列表頁面開啟該認證源。
建立並開啟認證源後,還需要告訴我們的 WordPress 應用來使用這個認證源。在應用列表找到 WordPress 應用,選擇 配置 -> 流程配置,在登入流程的關聯認證源中勾選剛剛建立的郵箱OTP認證源,然後點選確定。
此時,再次訪問 CIAM 登入頁面,可以看到在原先賬號密碼認證的基礎上新增了一個“郵箱登入”的選擇。輸入郵箱並點選“傳送驗證碼”,即可透過郵箱中收到的一次性密碼完成登入。
遮蔽 WordPress 登入頁
當前,使用者登入時會先訪問 WordPress 的預設登入頁,然後點選頁面上的 Login with OpenID Connect 跳轉到 Tencent CIAM 登入頁進行登入。我們可以透過修改 WordPress OIDC 外掛的配置來進一步最佳化使用者登入體驗。訪問 設定 -> OpenID Connect Client,將第一項配置 Login Type 修改為 Auto Login - SSO,點選“保持更改”。
使用者再次登入時,將不再顯示 WordPress 登入頁,而是直接顯示 Tencent CIAM 登入頁。
為 WordPress 設定全站內容登入保護
某些場景下,我們希望使用者首先完成註冊登入,然後才能訪問 WordPress 站點的內容。可以透過勾選外掛的 Enforce Privacy 配置來實現此需求。
啟用登入保護
其他
Tencent CIAM 還支援微信登入、支付寶登入、使用者資料同步、忘記使用者名稱、忘記密碼等豐富的功能,有興趣的讀者可以基於本文的內容做進一步探索實踐。
Tencent CIAM的官網連結:https://console.cloud.tencent.com/ciam