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單點登入建立成功”和Service Mesh原生的安全資源。您可以單擊查看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。