配置OIDC認證鑒權(quán)
通過OIDC協(xié)議與企業(yè)的認證鑒權(quán)系統(tǒng)整合,可以實現(xiàn)對內(nèi)部服務(wù)的統(tǒng)一認證和授權(quán)管理,避免了重復(fù)的對接工作,同時簡化了認證流程。云原生網(wǎng)關(guān)提供了統(tǒng)一認證鑒權(quán),加強了系統(tǒng)的安全性,并提供了更加靈活的安全策略配置。整合OIDC協(xié)議還能實現(xiàn)單點登錄,您只需一次登錄即可訪問多個服務(wù)。
前提條件
已創(chuàng)建統(tǒng)一的認證鑒權(quán)服務(wù),且支持標(biāo)準(zhǔn)的OIDC(OpenID Connect)協(xié)議。
背景信息
網(wǎng)關(guān)作為外界訪問內(nèi)部服務(wù)的一個控制點,需要對外部的請求進行認證鑒權(quán),確保內(nèi)部服務(wù)的安全性。企業(yè)內(nèi)一般會自建一套統(tǒng)一的認證鑒權(quán)體系,云原生網(wǎng)關(guān)支持通過OIDC協(xié)議與自建的認證鑒權(quán)體系打通,支持對接入的內(nèi)部服務(wù)做統(tǒng)一認證鑒權(quán),避免每個服務(wù)都需要對接認證鑒權(quán)體系。
基于OIDC認證
OIDC(OpenID Connect)是一種安全認證機制,第三方應(yīng)用連接到身份認證提供商(Identify Provider)獲取用戶信息,并把這些信息以安全可靠的方式返回給第三方應(yīng)用。OIDC對OAuth2.0協(xié)議進行了擴展,通過擴展的ID Token字段,提供用戶基礎(chǔ)身份信息,ID Token使用JWT(JSON Web Token)格式進行封裝,提供自包含性、防篡改機制,可以安全地傳遞給第三方應(yīng)用程序并容易被驗證。
假設(shè)有以下四個角色:
客戶端:直接為用戶提供服務(wù)。
認證服務(wù):OpenID提供方,通常是指OpenID認證服務(wù)器,為第三方頒發(fā)用于認證的ID Token。
業(yè)務(wù)服務(wù):提供業(yè)務(wù)服務(wù)。
用戶:指資源持有者。
業(yè)務(wù)流程如下:
客戶端發(fā)送認證請求給認證服務(wù)。
用戶在認證頁面進行授權(quán)確認(通過用戶名和密碼登錄)。
認證服務(wù)對認證請求進行驗證,并返回Code給客戶端。
客戶端向業(yè)務(wù)服務(wù)請求回調(diào)接口,請求中攜帶Code。
業(yè)務(wù)服務(wù)請求認證服務(wù)頒發(fā)Token,請求中攜帶Code、Client ID、Client Secret。
認證服務(wù)驗證合法性,并返回ID Token。
認證成功,業(yè)務(wù)服務(wù)返回ID Token給客戶端。
客戶端向業(yè)務(wù)請求,請求中攜帶ID Token。
業(yè)務(wù)服務(wù)驗證ID Token是否合法,然后返回業(yè)務(wù)應(yīng)答。
云原生網(wǎng)關(guān)OIDC認證流程
在上述OIDC認證流程中,如果有不同的業(yè)務(wù)服務(wù),例如用戶服務(wù)、訂單服務(wù)等,則每個業(yè)務(wù)服務(wù)都需要實現(xiàn)認證鑒權(quán)邏輯,包括校驗請求是否合法、對接認證服務(wù)等。通過云原生網(wǎng)關(guān)的OIDC認證功能,可以實現(xiàn)在網(wǎng)關(guān)統(tǒng)一認證鑒權(quán)。
業(yè)務(wù)流程如下:
客戶端向網(wǎng)關(guān)發(fā)起認證請求。
網(wǎng)關(guān)將認證請求直接轉(zhuǎn)發(fā)到給認證服務(wù)。
認證服務(wù)讀取請求中的驗證信息(例如用戶名、密碼)進行驗證,驗證通過后返回Code給網(wǎng)關(guān)。
網(wǎng)關(guān)將攜帶Code的應(yīng)答返回給客戶端。
客戶端向網(wǎng)關(guān)請求回調(diào)接口,請求中攜帶Code。
網(wǎng)關(guān)請求認證服務(wù)頒發(fā)Token,請求中攜帶Code、Client ID、Client Secret。
認證服務(wù)驗證合法性,并返回ID Token。
認證成功,網(wǎng)關(guān)將攜帶ID Token的應(yīng)答返回給客戶端。
客戶端向網(wǎng)關(guān)發(fā)起業(yè)務(wù)請求,請求中攜帶ID Token,網(wǎng)關(guān)校驗請求中是否攜帶ID Token和合法性。
網(wǎng)關(guān)校驗客戶端的業(yè)務(wù)請求合法,將請求透傳給業(yè)務(wù)服務(wù)。
業(yè)務(wù)服務(wù)進行業(yè)務(wù)處理后應(yīng)答。
網(wǎng)關(guān)將業(yè)務(wù)應(yīng)答返回客戶端。
在整個認證鑒權(quán)過程中,云原生網(wǎng)關(guān)會驗證請求是否合法。如果請求不合法,云原生網(wǎng)關(guān)會重定向到用戶登錄頁面,并能代理請求認證服務(wù)實現(xiàn)用戶登錄認證,實現(xiàn)業(yè)務(wù)服務(wù)對認證服務(wù)無感知。
創(chuàng)建認證鑒權(quán)規(guī)則
在左側(cè)導(dǎo)航欄,選擇云原生網(wǎng)關(guān) > 網(wǎng)關(guān)列表,并在頂部菜單欄選擇地域。
在網(wǎng)關(guān)列表頁面,單擊目標(biāo)網(wǎng)關(guān)名稱。
在左側(cè)導(dǎo)航欄,選擇安全管理 > 全局認證鑒權(quán)。
在頁面左上角,單擊創(chuàng)建鑒權(quán)配置網(wǎng)關(guān)鑒權(quán)相關(guān)參數(shù),然后單擊確定。
云原生網(wǎng)關(guān)OIDC認證鑒權(quán)參數(shù)說明如下。
參數(shù)
描述
鑒權(quán)名稱
自定義云原生網(wǎng)關(guān)鑒權(quán)的名稱。
鑒權(quán)類型
選擇OIDC認證方式。
Issuer
設(shè)置認證服務(wù)的Issuer,即簽發(fā)人。
重定向URL
輸入授權(quán)成功后的重定向地址,需要與OIDC中配置的重定向地址保持一致。
重要格式為
http(s)://yourdomain/path
(地址中的path必須為/oauth2/callback
)Client-ID
輸入服務(wù)注冊的應(yīng)用ID。
Client-Secret
輸入服務(wù)注冊的應(yīng)用Secret。
Cookie-Domain
輸入Cookie的域名,認證通過后會將Cookie發(fā)送到指定的域名,保持登錄狀態(tài)。例如:設(shè)置
Cookie-domain=a.example.com
,則Cookie會發(fā)送到域名a.example.com;設(shè)置Cookie-domain=.example.com
,則Cookie會發(fā)送到example.com的所有子域名。Scope
輸入授權(quán)作用域,多個域值用英文分號(;)分隔。
授權(quán)
授權(quán)模式支持白名單模式和黑名單模式。
白名單模式:白名單中的hosts+paths不需要校驗即可訪問,其余的都需要校驗。
黑名單模式:黑名單中的hosts+paths需要校驗,其余可直接訪問。
單擊+規(guī)則條件,設(shè)置請求域名和路徑。
域名:請求訪問的域名,即hosts。
路徑(Path):請求訪問的接口路徑,即paths。
創(chuàng)建認證路由
云原生網(wǎng)關(guān)認證鑒權(quán)規(guī)則創(chuàng)建完成后,然后創(chuàng)建認證相關(guān)路由規(guī)則。具體操作,請參見創(chuàng)建路由。
認證規(guī)則路由參數(shù)配置如下:
關(guān)聯(lián)域名:選擇創(chuàng)建鑒權(quán)配置的重定向URL的域名,如果沒有配置域名可以選擇*。
重要如果使用HTTPS,必須配置域名并關(guān)聯(lián)。
路徑:選擇前綴匹配,并輸入
/oauth2
。目標(biāo)服務(wù):選擇目標(biāo)服務(wù)oauth2-proxy。
查看鑒權(quán)詳情
在左側(cè)導(dǎo)航欄,選擇云原生網(wǎng)關(guān) > 網(wǎng)關(guān)列表,并在頂部菜單欄選擇地域。
在網(wǎng)關(guān)列表頁面,單擊目標(biāo)網(wǎng)關(guān)名稱。
在左側(cè)導(dǎo)航欄,選擇安全管理 > 全局認證鑒權(quán)。
在全局認證鑒權(quán)頁面,單擊鑒權(quán)規(guī)則名稱或操作列的詳情,可查看當(dāng)前認證配置和授權(quán)信息的管理。
您可在授權(quán)信息區(qū)域單擊創(chuàng)建授權(quán)信息,在對話框中輸入請求域名和請求Path,并選擇匹配方式,單擊確定新增授權(quán)規(guī)則。
結(jié)果驗證
返回全局認證鑒權(quán)頁面查看鑒權(quán)信息,如果已包含新建網(wǎng)關(guān)鑒權(quán)信息,則說明網(wǎng)關(guān)認證鑒權(quán)新建成功。
相關(guān)操作
您還可以執(zhí)行以下其他操作,管理網(wǎng)關(guān)的認證鑒權(quán):
開啟鑒權(quán):在全局認證鑒權(quán)頁面,單擊目標(biāo)鑒權(quán)規(guī)則操作列的開啟,使認證鑒權(quán)信息生效。
關(guān)閉鑒權(quán):在全局認證鑒權(quán)頁面,單擊目標(biāo)鑒權(quán)規(guī)則操作列的關(guān)閉,關(guān)閉網(wǎng)關(guān)認證鑒權(quán)信息。
編輯鑒權(quán):在全局認證鑒權(quán)頁面,單擊目標(biāo)鑒權(quán)規(guī)則操作列的編輯,可編輯網(wǎng)關(guān)認證鑒權(quán)信息。
刪除鑒權(quán):在全局認證鑒權(quán)頁面,單擊目標(biāo)鑒權(quán)規(guī)則操作列的刪除,可刪除網(wǎng)關(guān)認證鑒權(quán)信息。
只有在認證鑒權(quán)信息關(guān)閉的狀態(tài)下才可執(zhí)行刪除操作。
相關(guān)文檔
如果您想了解其他認證鑒權(quán)機制,請參見網(wǎng)關(guān)認證鑒權(quán)概述。