OIDC協(xié)議對接及配置說明
本文為您介紹OIDC的鑒權(quán)服務器的標準協(xié)議及配置說明。
僅獨立部署版本支持對接OIDC協(xié)議,可自行完成對接。若需要緊急支持或專家指導,請聯(lián)系Quick BI運營負責人。
背景信息
OpenID Connect(OIDC)是建立在 OAuth 2.0 協(xié)議之上的身份認證和授權(quán)協(xié)議,是OAuth2.0的擴展,屬于比較主流的登錄協(xié)議。對于已有支持OIDC的鑒權(quán)服務器的租戶,需要在原有基礎上針對外部系統(tǒng)進行接入,從而實現(xiàn)單點登錄以及打通企業(yè)內(nèi)部員工基礎信息的需求。
本文為您介紹OIDC的鑒權(quán)服務器的標準協(xié)議以及如何與Quick BI進行SSO登錄集成對接,對接說明請參見協(xié)議對接說明。
應用場景
支持授權(quán)碼模式的 OIDC 標準協(xié)議(須滿足相關 endpoint 及其參數(shù)定義)。
支持使用配置化的方式對Quick BI進行接入。
僅用于登錄對接,Quick BI為SP服務提供方,以下涉及的對接配置需要IDP方(租戶側(cè))提供。
快速開始
1. 接入前準備
1.1 租戶側(cè)在OIDC鑒權(quán)服務器上配置Quick BI客戶端
各個三方OIDC的鑒權(quán)服務器配置客戶端的方式可能不一致,根據(jù)實際情況操作,目的是完成以下Quick BI 接入的配置項,包括:
配置項 | 是否必填 | 說明 |
client ID | 是 | 頒布給 Quick BI 用于標識身份的客戶端ID。 |
client secret | 否 | 頒布給 Quick BI 用于身份校驗的客戶端Secret。 |
callback url | 是 | 在獲取授權(quán)碼后回調(diào) Quick BI 的地址,格式上為:Quick BI 域名 + /login/oidc/callback 例如,租戶側(cè)部署的 Quick BI 域名為 https://a.quickbi.com,則該回調(diào)地址為:https://a.quickbi.com/login/oidc/callback |
1.2 網(wǎng)絡要求
對接前,請確保您的鑒權(quán)服務器地址和Quick BI服務地址的網(wǎng)絡連通性!
2. 在Quick BI進行對接配置
2.1 開啟OIDC登錄
步驟一:使用登錄認證超管賬號進入超級管理員后臺。
若賬號無權(quán)限登錄時,會出現(xiàn)以下界面,提示“無權(quán)限禁止訪問”。請聯(lián)系Quick BI運維人員添加權(quán)限。
步驟二: 選擇登錄系統(tǒng)管理->登錄全局開關,開啟/關閉指定的三方登錄方式,保存后立即生效
2.2 OIDC登錄對接配置
步驟一:打開登錄認證配置頁面
在運維中心->登錄策略配置或開放平臺->登錄認證中打開。兩個路徑打開的配置效果是一樣的,下面以在開放平臺中打開對應頁面為例,頁面如下:
步驟二:添加登錄策略
若您已配置過登錄策略,則跳過步驟二。
每個登錄策略都允許配置一套域名/IP攔截策略,用來指定訪問指定域名或IP時Quick BI支持的登錄方式。
登錄策略配置請參見自定義企業(yè)登錄門戶。
步驟三:選中需要開啟OIDC登錄的策略,并單擊編輯策略。
步驟四:在編輯策略頁面,選擇基礎設置
步驟五:配置OIDC三方登錄
在您進行OIDC三方登錄配置前,若您未開啟Quick BI賬號,建議開啟,原因如下:1)防止三方登錄設置錯誤后,無法登錄Quick BI;2)自定義賬號配置成功且能正常登錄后,可根據(jù)需要關閉Quick BI賬號。
Quick BI賬號配置頁面如下(相關配置項請參見內(nèi)置賬號配置說明):
開啟OIDC登錄
在彈出窗口填寫OIDC的配置信息。
其中,OIDC 協(xié)議相關的配置項及說明如下:
配置項 | 是否必填 | 說明 | 填寫規(guī)范/參考值 | 提供方 |
授權(quán)服務器登錄地址 | 是 | 用于獲取 授權(quán)碼(code) 的URL。通常來說是三方的登錄地址,根據(jù)實際情況需要帶入Quick BI的頒布信息。 | https://github.com/login/oauth/authorize?client_id=fc9cxxxxxxxxxxaxxxxf&scope=read | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
授權(quán)服務器登出地址 | 否 | 授權(quán)服務器登出時的URL地址。 | 填寫規(guī)范: Quick BI調(diào)用接口的請求方式為GET, 請求時的token會放入Header中: addHeader("Authorization", "Authorization Header類型"+ " " + "token的值"); 參考值:https://github.com/logout | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
系統(tǒng)名稱 | 是 | 對接的系統(tǒng)名稱,用于在登錄項的按鈕組標題顯示。 | 三方賬戶OIDC | 由租戶側(cè)自定義 |
系統(tǒng)ICON | 否 | 對接的系統(tǒng)圖標,用于在登錄項中的顯示圖標,最大32K。(icon注意對齊一下) | 由租戶側(cè)自定義 | |
client ID | 是 | 由 OIDC 鑒權(quán)服務器頒發(fā)給應用的 ID。 | fc9cxxxxxxxxxxaxxxxf | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
client secret | 是 | 由 OIDC 鑒權(quán)服務器頒發(fā)給應用的密鑰。 | c711xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
請求token地址 | 是 | OIDC 鑒權(quán)服務器請求token的地址。 | https://eiam-api-cn-hangzhou.aliyuncs.com/v2/idaas_mayjwcaw6huncj2nk3rgqqvd7m/app_mzutlrgucmvgjgpmowq5qyhflm/oauth2/token | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
請求token額外參數(shù) | 否 | 請求access token時需要添加的額外靜態(tài)參數(shù)。 | {"redirect_uri":"http://{quickbi服務器地址}/login/ram/oauth2/callback","grant_type":"authorization_code"} | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
請求用戶信息地址 | 是 | OIDC鑒權(quán)服務器請求用戶信息的地址。 | https://api.github.com/user | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
驗證id_token簽名的加密算法公鑰 | 否 | 用于解密OIDC簽名算法的公鑰。 | 填寫規(guī)范:為JSON格式。 "kty" (key type): 表示密鑰的類型。在這里,它是"RSA",意味著這是一個RSA類型的公鑰。 "e": RSA算法的指數(shù)部分,通常是一個固定的小數(shù)值,這里是"AQAB",這實際上是數(shù)字65537的Base64url編碼形式。 "use": 密鑰的預期用途。這里的"sig"表示該密鑰用于簽名驗證。 "kid" (key ID): 是用來標識密鑰的唯一ID。這對于管理多組密鑰非常有用,特別是在密鑰輪換的情況下。 "n": RSA算法的模數(shù)部分,是公鑰的核心組成部分。這里顯示的是一個很長的數(shù)字,經(jīng)過Base64url編碼。
| 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
用戶賬戶ID映射 | 是 | 從獲取的用戶信息中得到賬戶ID所在的字段映射。 | sub | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
用戶賬戶名稱映射 | 是 | 從獲取的用戶信息中得到賬戶名稱所在的字段映射。 | $.preferred_username preferred_username | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
用戶昵稱映射 | 是 | 從獲取的用戶信息中得到昵稱所在的字段映射。 | nick | 由租戶側(cè)鑒權(quán)服務器(IDP)提供 |
Session 失效時間(秒) | 是 | 指定登錄態(tài)Session的失效時間,失效后,重新發(fā)起登錄校驗。單位為秒,推薦值為86400。 | 86400 | 由租戶側(cè)自定義 |
Cookie 失效時間(秒) | 是 | Cookie的失效時間,單位為秒,失效后需重新登錄。若值為-1,表示隨瀏覽器關閉失效; 若值大于 0,則按指定值失效,推薦值為86400。 | 86400 | 由租戶側(cè)自定義 |
步驟六: 保存并發(fā)布策略
保存發(fā)布后立即生效,請慎重操作。
推薦新建無痕模式窗口或者打開其他瀏覽器測試登錄配置是否成功,以防退出登錄后由于登錄配置錯誤導致無法登錄。
3. 登錄驗證
在您完成OIDC登錄對接配置后,請訪問Quick BI服務地址,并點擊OIDC登錄,進行登錄驗證。
為了防止其他因素干擾,推薦新建無痕窗口用來測試登錄。
需要注意的是所有的無痕窗口共用cookies,通過關閉窗口清空登錄態(tài)時需要保證所有無痕窗口被關閉。
協(xié)議對接說明
1. 登錄流程
三方用戶訪問Quick BI頁面,未登錄跳轉(zhuǎn)到登錄策略中配置的[授權(quán)服務器登錄地址]
OIDC服務器認證登錄后通過自身系統(tǒng)中配置的callback_url重定向到Qucik BI頁面返回授權(quán)碼code
Quick BI接收到請求后,提取請求中的所有參數(shù)包括code,加上登錄策略中配置的[client ID],[client secret],[請求OIDC_token額外參數(shù)]調(diào)用[請求 OIDC_token 地址]獲取OIDC令牌
Quick BI拿到OIDC后調(diào)用登錄策略中配置的RSA驗簽公鑰驗證OIDC簽名,驗簽成功后解析OIDC獲取登錄用戶的信息
Quick BI拿到返回值后,通過登錄策略中配置的JSONPATH規(guī)則解析得到三方賬戶ID,賬戶名,昵稱并寫入session登錄,保存Qucik BI的登錄cookie
2. 三方用戶信息映射
Quick BI 通過 OIDC鑒權(quán)完畢后,需要獲取租戶側(cè)的用戶信息注入系統(tǒng),維護賬戶信息,其中必要參數(shù)有:
用戶在 OIDC 服務器上的內(nèi)部ID(對應Quick BI的AccountId)
用戶在OIDC 服務器上的賬戶名稱(對應Quick BI的賬號)
用戶在 OIDC 服務器上的昵稱(對應Quick BI的昵稱)
對于用戶信息接口返回,目前僅支持 JSON 格式的接口返回,Quick BI 側(cè)以 JSONPath 的語法解析上述的必要參數(shù),返回如下為例:
{
"id": 1,
"account_name": "xxx",
"nick_name": "xxx"
}
相關的配置項為:
配置項 | 是否必選 | 說明 |
用戶賬戶 ID 映射 | 是 | id:標識獲取ID字段。 |
用戶賬戶名稱映射 | 是 | account_name:標識獲取account_name字段。 |
用戶昵稱解析映射 | 是 | nick_name:標識獲取nick_name字段。 |