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