本文將結合阿里雲RAM存取控制,向您示範如何配置M2M應用的無AK訪問方式,並擷取STS Token的流程。
前提條件
已完成M2M應用的相關配置。瞭解M2M相關應用及配置,請參考:M2M應用(機器間許可權管理)。
建立OIDC身份供應商
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇。
在角色SSO頁簽,先單擊OIDC頁簽,然後單擊建立身份供應商。
在建立身份供應商頁面,設定身份供應商資訊。
參數
說明
身份供應商名稱
同一個阿里雲帳號下必須唯一,與 IDaaS 無關,按照 RAM 規則錄入。
頒發者 URL
頒發者 URL(Issuer URL)是外部身份供應商(IdP)為M2M應用程式指派的唯一標識,用於OAuth 2.0等協議中校正令牌來源。
阿里雲IDaaS會基於此URL驗證外部IdP頒發的令牌的有效性,其配置位於IDaaS M2M應用(Client端)的 Issuer 欄位中。
驗證指紋
填寫完頒發者 URL後,您可以單擊擷取指紋,阿里雲會輔助您自動計算出驗證指紋,但是建議您在本地自己計算一次(例如:通過OpenSSL擷取OIDC IdP的指紋),與阿里雲計算的指紋進行對比。
如果對比發現不同,則說明該頒發者URL可能已經受到攻擊,請您務必再次確認,並填寫正確的指紋,RAM 會根據錄入的 Issuer 地址訪問擷取指紋。
說明當您的IdP計划進行認證輪轉時,請在輪轉前產生新認證的指紋並添加到阿里雲OIDC身份供應商資訊中,一段時間(至少一天)以後再進行認證輪轉,認證輪轉確認可以換取到STS Token後再刪除舊的指紋。
用戶端識別碼
用戶端ID(Client ID)是您的應用在外部身份供應商(IdP)註冊時產生的唯一標識。當外部IdP簽發OIDC令牌(OIDC Token)時,需使用該用戶端ID,且令牌的aud欄位會攜帶此ID。在阿里雲OIDC身份供應商中配置此用戶端ID後,系統會在使用OIDC Token換取STS Token時校正aud欄位的用戶端ID是否匹配,確保安全扮演角色。
單個OIDC身份供應商最多支援配置50個用戶端ID,適用於多應用訪問阿里雲的情境。
在M2M(Machine-to-Machine)應用情境中,用戶端ID對應 IDaaS M2M 應用中配置的受眾標識,用於服務端間認證。
最早頒發時間限制
在該限制時間之前頒發的OIDC Token不允許換取STS Token。預設值:12小時。取值範圍:1~168小時。
備忘
身份供應商的描述資訊。
單擊建立身份供應商。
建立OIDC身份供應商角色
前往阿里雲RAM存取控制控制台,選擇。

在編輯器頁面,按照下圖的步驟,開始添加身份提供者。

在添加主體彈出框中,選擇上文中已經建立好的身份提供者,點擊確定完成添加。

身份提供者添加完成後,會預設產生iss和aud條件,您可以選擇編輯或刪除這兩個條件,也可以繼續添加新的條件。

下文以添加
sub條件運算式為例,向您示範如何添加條件,您可按實際需要選擇是否添加。編輯完成後,點擊確定,即可完成添加。說明條件值:您需要填入已經建立好的M2M應用Server端的 client_id。如何添加M2M應用及查看受眾標識等資訊,請參考:M2M應用(機器間許可權管理)。
如果您需要瞭解更多條件運算式的資訊,請參考:權限原則基本元素。
當前RAM OIDC中僅支援三種條件:oidc:iss、oidc:aud、oidc:sub。

單擊底部的確定,在建立角色彈出框中,填入您要建立的角色名稱,單擊確定,即可完成角色建立。

角色授權
您可以根據需要,向已建立的角色新增授權。

擷取M2M Token
通過curl命令方式擷取
請將以下佔位參數替換為您的應用配置後,執行curl命令,擷取Token。
# 請將<app_issuer_endpoint>、<YOUR_APP_CLIENT_ID>、<YOUR_APP_CLIENT_SECRET>和<YOUR_SERVER_AUD_IDENTIFIER>替換為您M2M應用的具體配置值。 # # <YOUR_SERVER_ISSUER_ENDPOINT>:Issuer,“Resources Server應用 > 通用配置 > Issuer“中查看Endpoint並替換。 # <YOUR_APP_CLIENT_ID>:用戶端ID,在“Client應用 > 通用配置 > 憑證管理“中查看client_id並替換。 # <YOUR_APP_CLIENT_SECRET>:用戶端Secret,在“Client應用 > 通用配置 > 憑證管理“中查看client_secret並替換。 # <YOUR_SERVER_AUD_IDENTIFIER>:服務端受眾標識,在“Resources Server應用 > 服務端許可權開放 > 許可權應用 > 受眾標識“中,尋找受眾標識並替換。 # curl --location --request POST 'https://<YOUR_SERVER_ISSUER_ENDPOINT>.aliyunidaas.com/api/v2/iauths_system/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=<YOUR_APP_CLIENT_ID>' \ --data-urlencode 'client_secret=<YOUR_APP_CLIENT_SECRET>' \ --data-urlencode 'grant_type=client_credentials' \ #.all 是阿里雲 IDaaS 平台中的一個預定義範圍識別碼,表示 請求該受眾(Audience)下的所有可用許可權。 --data-urlencode 'scope=<YOUR_SERVER_AUD_IDENTIFIER>|.all'Token擷取成功時結果如下。

通過Postman工具擷取
如下圖所示,請將各參數替換為您的應用配置參數後,通過Postman發起請求擷取token。

通過M2M Token擷取RAM角色的臨時身份憑證(STS Token)
如果您暫時不瞭解阿里雲STS,請先前往瞭解什麼是STS。
OpenAPI方式擷取
前往OpenAPI門戶,找到AssumeRoleWithOIDC介面。
說明本文僅示範擷取,更多關於AssumeRoleWithOIDC介面的詳細資料,請參見:AssumeRoleWithOIDC - OIDC角色SSO時擷取扮演角色的臨時身份憑證。
填寫介面所需的必要參數,確認無誤後點擊發起調用,即可擷取到STS Token。
重要OIDCProviderArn:請前往您已建立的OIDC身份服務提供者角色的基本資料中,從信任策略中擷取。
RoleArn:請前往您已建立的OIDC身份服務提供者角色的基本資料中,找到ARN並擷取。
OIDCToken:填入您上文中已擷取成功的M2M Token。
RoleSessionName:無特殊要求,使用者自訂欄位,僅作為角色標識。