內容簡介
這個外掛可以使用授權流程對使用者進行 GH Portal API 的身份驗證。
安裝後,可以設置自動驗證使用者 (單一簽入(SSO)),獲得同意後,現有使用者將自動登錄 WordPress,而
新使用者將在 WordPress 資料庫中建立。
插件運行流程解釋
當你的 WordPress 應用程式的使用者訪問其中一個公開頁面時,會檢查當前設置的使用者會話。當 GH_Portal_SSO_Option_Settings::enforce_privacy 設置為 TRUE 時,外掛將在未找到任何活動會話時將使用者從公開頁面重定向到 Greenhouse Portal SSO 頁面。在訪問任何 wp-admin 頁面時,會執行預設的 WordPress 授權檢查,這也允許使用者使用其現有的 Greenhouse 帳戶或 WordPress 帳戶進行登錄。
下列說明針對任何非 wp-admin 頁面請求,如果未發現使用者會話則應用:
當前頁面使用者將被重定向到 Greenhouse Portal,後者充當 Auth0 的管理系統和 Greenhouse 的 Microsoft Identity(OpenID Connect)帳戶之間的代理,通過 SSO 執行其身份驗證。
使用 Greenhouse Portal 成功進行 SSO 將產生活動訪問令牌,其有效期較短(8 小時)。此存取令牌可用於代表其已獲得同意的使用者檢索數據。
重定向到 Greenhouse Portal 的請求需要將 redirect_uri 作為其查詢參數之一。這是代理應返回用戶訪問令牌的 URL。預設情況下,重定向 URL 設置為 admin-ajax.php 與 admin_url 結合使用,並使用WordPress 的 AJAX API 進一步處理重定向流程。
`
臨時重定向
位置:
https://authorize.my.greenhousegroup.com/authorize
redirect_uri=<redirect/callback URL>
`
上述 URL 將啟動對 Auth0 的 SSO 請求。使用者登錄後,Greenhouse Portal 將通過作為查詢參數傳遞的重定向 URL 將使用者重定向到給定的 URL。訪問令牌作為查詢參數通過重定向 URL 傳遞 (例如:?GHP_authorization_token=xxxxxxxxxxxx)。
成功重定向後,會從查詢參數中獲取存取令牌。將從檢索到的存取令牌進行另外的請求,以從 Greenhouse API 中檢索 Greenhouse 使用者資訊。
`
POST / HTTP/1.1
Host:
https://api.my.greenhousegroup.com/user
標頭:
授權=
x-api-version=
`
使用 Greenhouse 使用者資訊來查找現有的 WordPress 使用者。當未找到 WordPress 使用者時,在成功登錄時可以自動建立新的 WordPress 使用者,前提是將 GH_Portal_SSO_Option_Settings::create_if_does_not_exist 設置為 TRUE。
在找不到或無法創建 WordPress 使用者帳戶時,使用者將重定向到 wp-admin 登錄頁面,顯示相關的錯誤訊息(如果有)。
外掛標籤
開發者團隊
原文外掛簡介
This plugin allows to authenticate users against GH Portal API with Authorization Flow.
Once installed, it can be configured to automatically authenticate users (SSO). After consent has been obtained, an existing user is automatically logged into WordPress, while
new users are created in WordPress database.
Plugin flow explained
When a user of your WordPress application visits one of your public pages, a check is done if a user session is currently set. When GH_Portal_SSO_Option_Settings::enforce_privacy is set to TRUE, the plugin will redirect the user from the public page to the Greenhouse Portal SSO page incase no active session was found. The default WordPress authorization check if performed when accessing any of the wp-admin pages. This also allows to user to sign-in using either the Greenhouse account of their existing WordPress acount.
The following applies to any non wp-admin page request incase no user session is found:
The user will be redirected from the current page to the Greenhouse Portal, which acts a proxy between Auth0’s management system and Greenhouse’s Microsoft Identity (OpenID Connect) accounts, to perform it’s authentication through SSO.
A success SSO using the Greenhouse Portal results in an active access token that’s short lived (8 hours). The access token can be used to retrieve data on behalf of the user to which he/she has given consent.
The request for a redirect to the Greenhouse Portal requires a redirect_uri as one of its query parameter. This is the URL to which the proxy should return the user’s access token. By default, the redirect URL is set to admin-ajax.php in conjuction with admin_url and uses WordPress’ AJAX API to further handle the redirect flow.
`
Temperary Redirect
Location:
https://authorize.my.greenhousegroup.com/authorize
redirect_uri=
`
The above URL will initiate a SSO request to Auth0. Once the user has signed in, the Greenhouse Portal will redirect the user to the given URL in the redirect_uri query parameter. The access token is passed through as a query parameter to the redirect url (e.g. ?GHP_authorization_token=xxxxxxxxxxxx).
On successfull redirect, the access token is fetched from the query parameters. An additional request is made to the Greenhouse API to fetch the Greenhouse user information from the retrieved access token.
`
POST / HTTP/1.1
Host:
https://api.my.greenhousegroup.com/user
Headers:
Authorization=
x-api-version=
`
The Greenhouse user information is used to find an existing WordPress user. When no WordPress user was found, a new one can be automatically created when GH_Portal_SSO_Option_Settings::create_if_does_not_exist is set to TRUE on successfull sign-in.
After finding/creating the WordPress user, a session of 8 hours is created, the duration can be set by GH_Portal_SSO_Option_Settings::expires_in using a numeric measured in seconds.
When no WordPress user account was found or can not be created, the user is redirected to the wp-admin sign-in page with the approriate error message (if any).
