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中的 |
驗證指紋 | 為了防止頒發者URL被惡意劫持或篡改,您需要配置外部IdP的HTTPS CA認證產生的驗證指紋。阿里雲會輔助您自動計算該驗證指紋,但是建議您在本地自己計算一次(例如:使用OpenSSL計算指紋),與阿里雲計算的指紋進行對比。如果對比發現不同,則說明該頒發者URL可能已經受到攻擊,請您務必再次確認,並填寫正確的指紋。 說明 當您的IdP計划進行認證輪轉時,請在輪轉前產生新認證的指紋並添加到阿里雲OIDC身份供應商資訊中,一段時間(至少一天)以後再進行認證輪轉,認證輪轉確認可以換取到STS Token後再刪除舊的指紋。 |
用戶端ID | 您的應用在外部IdP註冊的時候,會產生一個用戶端ID(Client ID)。當您從外部IdP申請簽發OIDC令牌時必須使用該用戶端ID,簽發出來的OIDC令牌也會通過 |
應用情境
當公司專屬應用程式需要頻繁訪問阿里雲時,如果使用固定的存取金鑰(AccessKey),且安全防護措施不足時,可能會因AccessKey泄露而帶來安全隱患。為瞭解決這個問題,有些企業會將應用註冊在企業自建或者第三方的具有OIDC能力的身份供應商中(例如:Google G Suite或Okta等),以藉助OIDC身份供應商的能力來為應用產生OIDC令牌(OIDC Token)。在這種情況下,藉助阿里雲RAM提供的角色SSO能力,公司專屬應用程式可以通過持有的OIDC令牌換取阿里雲臨時身份憑證(STS Token),從而安全地訪問阿里雲資源。
此外,有些個人開發人員或中小企業允許員工使用其在一些網站(例如:社交網站)上註冊的身份來登入阿里雲,如果這些網站支援產生OIDC令牌,則可以使用阿里雲RAM來完成基於OIDC的單點登入。
基本流程
在外部IdP中註冊應用,擷取應用的用戶端ID(Client ID)。
在阿里雲RAM中建立OIDC身份供應商,配置阿里雲與外部IdP的信任關係。
具體操作,請參見建立OIDC身份供應商。
在阿里雲RAM中建立可信實體為OIDC身份供應商的RAM角色,並為RAM角色授權。
具體操作,請參見建立OIDC身份供應商的RAM角色和為RAM角色授權。
在外部IdP中籤發OIDC令牌(OIDC Token)。
具體操作,請參見外部IdP的對應文檔。
使用OIDC Token換取STS Token。
具體操作,請參見AssumeRoleWithOIDC。
使用STS Token訪問阿里雲資源。
配置樣本
使用限制
限制項 | 最大值 |
一個阿里雲帳號中可建立的OIDC身份供應商個數 | 100 |
一個OIDC身份供應商中的用戶端ID個數 | 20 |
一個OIDC身份供應商中的驗證指紋個數 | 5 |