全部產品
Search
文件中心

Alibaba Cloud Service Mesh:在ASM網關中配置OIDC單點登入

更新時間:Jun 30, 2024

OIDC(OpenID Connect)是基於OAuth 2.0協議實現的一種身份認證與授權協議,主要用於實現單點登入(SSO)。通過在ASM網關中配置OIDC單點登入,您可以藉助阿里雲IDaaS或其他符合OIDC標準的身份提供者,無需修改應用本身,即可實現一次登入、多次訪問。這不僅增強了應用的安全性,還簡化了應用系統的開發和管理。

前提條件

操作步驟

本文以阿里雲IDaaS的IdP為例。若您使用自建的OIDC服務,請參見ASM中整合Keycloak實現網格內應用單點登入

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

  3. 入口網關頁面,單擊目標網關名稱。

  4. 在網關概覽頁面左側導覽列,選擇網關安全 > OIDC單點登入

  5. 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支援。

    OIDC配置

  6. 匹配規則設定精靈,進行相關配置,然後單擊提交

    配置項

    說明

    匹配模式

    本文選擇選中請求必須經過認證。取值說明如下:

    • 選中請求必須經過認證:需要使用者登入才能進行訪問。

    • 選中請求可跳過認證:無需使用者登入,即可進行訪問。

    添加配置規則

    開啟HTTP路徑(Path)開關,配置為/productpage。該配置表示路徑為/productpage的請求必須經過OIDC認證。

    建立成功後,在完成設定精靈會顯示“網關OIDC單點登入建立成功”和Service Mesh原生的安全資源。您可以單擊查看YAML,查看資源的具體配置。

  7. 使用瀏覽器訪問http://${ASM網關地址}/productpage,驗證OIDC單點登入配置是否生效。

    請將${ASM網關地址}替換為實際網關地址。如下圖所示,您登入後訪問成功,表明OIDC單點登入配置生效。驗證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為例,詳情請參見擴充欄位

如何登出當前的登入狀態?

登出分為以下兩個步驟:

  1. 登出IdP處的登入狀態。您需要根據IdP提供的方法進行登出。通常IdP會提供一個用於登出的URI,調用之後即可登出。

  2. 清除當前網關在用戶端設定的Cookie。您可以直接調用/oauth2/sign_out路徑,網關會自動清除對應Cookie。

ASM從1.18.147版本起,支援直接在網關上配置IdP登出端點。您可以直接在OIDC配置頁面填寫,然後在匹配規則的配置中,將路徑為/oauth2/sign_out的請求跳過認證。配置完成後,瀏覽器訪問/oauth2/sign_out時,對應Cookie會被清除,同時頁面會被重新導向至您設定的登出端點。關於阿里雲IDaaS登出的具體步驟,請參見單點登出SLO

相關文檔