全部產品
Search
文件中心

Resource Access Management:OIDC角色SSO概覽

更新時間:Apr 16, 2024

OIDC(OpenID Connect)是建立在OAuth 2.0基礎上的一個認證協議,阿里雲RAM支援基於OIDC的角色SSO。

基本概念

概念

說明

OIDC

OIDC(OpenID Connect)是建立在OAuth 2.0基礎上的一個認證協議。OAuth是授權協議,而OIDC在OAuth協議上構建了一層身份層,除了OAuth提供的授權能力,它還允許用戶端能夠驗證終端使用者的身份,以及通過OIDC協議的API(HTTP RESTful形式)擷取使用者的基本資料。

OIDC令牌

OIDC可以給應用簽發代表登入使用者的身份令牌,即OIDC令牌(OIDC Token)。OIDC令牌用於擷取登入使用者的基本資料。

臨時身份憑證

STS(Security Token Service)是阿里雲提供的一種臨時存取權限管理服務,通過STS擷取可以自訂時效和存取權限的臨時身份憑證(STS Token)。

頒發者URL

頒發者URL由外部IdP提供,對應OIDC Token中的iss欄位值。頒發者URL必須以https開頭,符合標準URL格式,但不允許帶有query參數(以?標識)、fragment片段(以#標識)和登入資訊(以@標識)。

驗證指紋

為了防止頒發者URL被惡意劫持或篡改,您需要配置外部IdP的HTTPS CA認證產生的驗證指紋。阿里雲會輔助您自動計算該驗證指紋,但是建議您在本地自己計算一次(例如:使用OpenSSL計算指紋),與阿里雲計算的指紋進行對比。如果對比發現不同,則說明該頒發者URL可能已經受到攻擊,請您務必再次確認,並填寫正確的指紋。

說明

當您的IdP計划進行認證輪轉時,請在輪轉前產生新認證的指紋並添加到阿里雲OIDC身份供應商資訊中,一段時間(至少一天)以後再進行認證輪轉,認證輪轉確認可以換取到STS Token後再刪除舊的指紋。

用戶端ID

您的應用在外部IdP註冊的時候,會產生一個用戶端ID(Client ID)。當您從外部IdP申請簽發OIDC令牌時必須使用該用戶端ID,簽發出來的OIDC令牌也會通過aud欄位攜帶該用戶端ID。在建立OIDC身份供應商時配置該用戶端ID,然後在使用OIDC令牌換取STS Token時,阿里雲會校正OIDC令牌中aud欄位所攜帶的用戶端ID與OIDC身份供應商中配置的用戶端ID是否一致。只有一致時,才允許扮演角色。

應用情境

當公司專屬應用程式需要頻繁訪問阿里雲時,如果使用固定的存取金鑰(AccessKey),且安全防護措施不足時,可能會因AccessKey泄露而帶來安全隱患。為瞭解決這個問題,有些企業會將應用註冊在企業自建或者第三方的具有OIDC能力的身份供應商中(例如:Google G Suite或Okta等),以藉助OIDC身份供應商的能力來為應用產生OIDC令牌(OIDC Token)。在這種情況下,藉助阿里雲RAM提供的角色SSO能力,公司專屬應用程式可以通過持有的OIDC令牌換取阿里雲臨時身份憑證(STS Token),從而安全地訪問阿里雲資源。

此外,有些個人開發人員或中小企業允許員工使用其在一些網站(例如:社交網站)上註冊的身份來登入阿里雲,如果這些網站支援產生OIDC令牌,則可以使用阿里雲RAM來完成基於OIDC的單點登入。

基本流程

OIDC角色SSO流程圖

  1. 在外部IdP中註冊應用,擷取應用的用戶端ID(Client ID)。

  2. 在阿里雲RAM中建立OIDC身份供應商,配置阿里雲與外部IdP的信任關係。

    具體操作,請參見建立OIDC身份供應商

  3. 在阿里雲RAM中建立可信實體為OIDC身份供應商的RAM角色,並為RAM角色授權。

    具體操作,請參見建立OIDC身份供應商的RAM角色為RAM角色授權

  4. 在外部IdP中籤發OIDC令牌(OIDC Token)。

    具體操作,請參見外部IdP的對應文檔。

  5. 使用OIDC Token換取STS Token。

    具體操作,請參見AssumeRoleWithOIDC

  6. 使用STS Token訪問阿里雲資源。

配置樣本

使用OIDC進行角色SSO的樣本

使用限制

限制項

最大值

一個阿里雲帳號中可建立的OIDC身份供應商個數

100

一個OIDC身份供應商中的用戶端ID個數

20

一個OIDC身份供應商中的驗證指紋個數

5