OIDC(OpenID Connect)是基于OAuth 2.0協議實現的一種身份認證與授權協議,主要用于實現單點登錄(SSO)。通過在ASM網關中配置OIDC單點登錄,您可以借助阿里云IDaaS或其他符合OIDC標準的身份提供者,無需修改應用本身,即可實現一次登錄、多次訪問。這不僅增強了應用的安全性,還簡化了應用系統的開發和管理。
前提條件
已為命名空間注入Sidecar。具體操作,請參見配置Sidecar注入策略。
已完成IdP(身份提供商)的配置。具體操作,請參見ASM集成阿里云IDaaS實現網格內應用單點登錄的步驟一和步驟二。
IdP配置完成后,您可以得到如下信息,用于下文步驟5的配置。
redirect uri:http://${網關地址}/oauth2/callback issuer:https://eiam-api-cn-hangzhou.aliyuncs.com/v2/idaas_tbn25osdlmz6gtqfq3j2pz****/app_ml5tzapsl7zmfo53wb3nwk****/oidc client id:******** client secret:*********
操作步驟
本文以阿里云IDaaS的IdP為例。若您使用自建的OIDC服務,請參見ASM中集成Keycloak實現網格內應用單點登錄。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在入口網關頁面,單擊目標網關名稱。
在網關概覽頁面左側導航欄,選擇 。
在OIDC配置配置向導,打開啟用網關OIDC單點登錄開關,進行相關配置,然后單擊下一步。
配置項
說明
登錄重定向地址
本文選擇使用網關IP地址和http協議。
callback地址
重定向地址。
OIDC頒發者URL
用于標識和驗證OpenID Connect提供者的URL。
頒發者提供的客戶端ID(ClientID)
頒發者提供的客戶端ID。
頒發者提供的客戶端密鑰(ClientSecret)
頒發者提供的客戶端密鑰。
Cookie密鑰
Secure Cookies的種子(支持Base64編碼)。
Cookie過期時間
到達該時間后刷新Cookie。設置為0表示關閉刷新。
Cookie刷新時間
每間隔該時間刷新Cookie。設置為0表示關閉。
用戶信息范圍Scopes
指定獲取的Scopes。指定的Scope必須被Issuer支持。
在匹配規則配置向導,進行相關配置,然后單擊提交。
配置項
說明
匹配模式
本文選擇選中請求必須經過認證。取值說明如下:
選中請求必須經過認證:需要用戶登錄才能進行訪問。
選中請求可跳過認證:無需用戶登錄,即可進行訪問。
添加配置規則
打開HTTP路徑(Path)開關,配置為/productpage。該配置表示路徑為/productpage的請求必須經過OIDC認證。
創建成功后,在完成配置向導會顯示“網關OIDC單點登錄創建成功”和服務網格原生的安全資源。您可以單擊查看YAML,查看資源的具體配置。
使用瀏覽器訪問http://${ASM網關地址}/productpage,驗證OIDC單點登錄配置是否生效。
請將${ASM網關地址}替換為實際網關地址。如下圖所示,您登錄后訪問成功,表明OIDC單點登錄配置生效。
FAQ
在網關上接入OIDC之后,應用是否還需要獲取access token或直接向IdP請求用戶信息?
在網關上接入OIDC之后,應用無需關注任何與IdP認證鑒權相關的邏輯。您的應用收到的請求中會攜帶一個Key為Authorization
的Header,這個Header是在請求經過網關時被添加上的。該Header是一個來自IdP的JWT,JWT的Payload中包含了應用所需的用戶信息,并且經過了網關的JWT驗證,您的應用無需再重復對該JWT進行驗證。應用直接從請求中解析這個Header即可,無需向IdP請求用戶信息。
接入OIDC之后,瀏覽器上登錄時發現多了一個Cookie,這個Cookie是否對應用有意義?
應用無需關注這個Cookie。該Cookie是網關記錄當前會話的狀態,對應用本身沒有意義。應用只需要讀取請求中的JWT即可。
如何獲取IdP提供的一些擴展信息?
在ASM處無需任何特殊配置,您需要參考對應的IdP實現。此處以阿里云IDaaS為例,詳情請參見擴展字段。
如何注銷當前的登錄狀態?
注銷分為以下兩個步驟:
注銷IdP處的登錄狀態。您需要根據IdP提供的方法進行注銷。通常IdP會提供一個用于登出的URI,調用之后即可注銷。
清除當前網關在客戶端設置的Cookie。您可以直接調用
/oauth2/sign_out
路徑,網關會自動清除對應Cookie。
ASM從1.18.147版本起,支持直接在網關上配置IdP登出端點。您可以直接在OIDC配置頁面填寫,然后在匹配規則的配置中,將路徑為/oauth2/sign_out
的請求跳過認證。配置完成后,瀏覽器訪問/oauth2/sign_out
時,對應Cookie會被清除,同時頁面會被重定向至您設置的登出端點。關于阿里云IDaaS登出的具體步驟,請參見單點登出SLO。
相關文檔
關于OIDC應用的相關配置項說明,例如接口訪問、密鑰輪轉、IDaaS對OIDC不同模式的支持、IDaaS側配置、應用側配置等,請參見基本配置、單點登錄通用說明、OIDC SSO 配置和OIDC id_token 擴展值填寫規范。
當您通過IDaaS SSO登錄應用后,需要退出登錄,可以在應用側發起全局退出,將IDaaS主登錄會話同步終止。具體操作,請參見單點登出SLO。