進行角色SSO時,通過調用AssumeRoleWithSAML介面,可以擷取一個扮演該角色的臨時身份憑證(STS Token)。

請求參數

说明 由於AssumeRoleWithSAML介面使用SAML斷言進行身份認證,可以匿名訪問,因此不需要提供公用參數中的SignatureSignatureMethodSignatureVersionAccessKeyId參數。
名稱 類型 是否必選 樣本值 描述
Action String AssumeRoleWithSAML 要執行的操作。取值:AssumeRoleWithSAML。
SAMLProviderArn String acs:ram::123456789012****:saml-provider/company1 RAM中建立的身份供應商的ARN。

格式:acs:ram::<account_ID>:saml-provider/<saml_provider_ID>

说明 您可以通過RAM控制台或API查看身份供應商的ARN。具體如下:
RoleArn String acs:ram::123456789012****:role/adminrole 要扮演的角色的ARN。

該角色是可信實體為身份供應商的RAM角色。更多資訊,請參見建立可信實體為身份供應商的RAM角色CreateRole

格式:acs:ram::<accountID>:role/<roleName>

说明 您可以通過RAM控制台或API查看角色ARN。具體如下:
SAMLAssertion String <base64_encoded_saml_assertion> Base64編碼後的SAML斷言。

長度為4~100000個字元。

说明 需要從IdP擷取完整的SAMLResponse,不能是單獨的SAMLAssertion欄位。
Policy String <url_encoded_policy> 為STS Token額外添加的一個權限原則,進一步限制STS Token的許可權。具體如下:
  • 如果指定該權限原則,則STS Token最終的許可權取RAM角色權限原則與該權限原則的交集。
  • 如果不指定該權限原則,則STS Token最終的許可權就是RAM角色的許可權。

長度為1~1024個字元。

DurationSeconds Long 3600

到期時間,單位為秒。

到期時間最小值為900秒,最大值為MaxSessionDuration設定的時間。預設值為3600秒。

说明 您可以通過CreateRoleUpdateRole介面設定角色最大會話時間MaxSessionDuration。詳情請參見CreateRoleUpdateRole

返回資料

名稱 類型 樣本值 描述
RequestId String 6894B13B-6D71-4EF5-88FA-F32781734A7F 請求ID。
Credentials 訪問憑證。
AccessKeyId String STS.L4aBSCSJVMuKg5U1**** 存取金鑰ID。
AccessKeySecret String wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK**** 存取金鑰。
SecurityToken String ******** 安全性權杖。
Expiration String 2015-04-09T11:52:19Z 失效時間。
AssumedRoleUser 角色扮演臨時身份。
Arn String acs:sts::123456789012****:assumed-role/AdminRole/alice 臨時身份的ARN。
AssumedRoleId String 34458433936495****:alice 臨時身份的ID。
SAMLAssertionInfo SAML斷言中的部分資訊。
SubjectType String persistent SAML斷言中NameID的格式。當首碼為urn:oasis:names:tc:SAML:2.0:nameid-format:時,首碼會被移除。例如:persistent/transient
Subject String alice@example.com SAML斷言中Subject - NameID欄位的值。
Recipient String https://signin.aliyun.com/saml-role/SSO SAML斷言中Subject - SubjectConfirmation - SubjectConfirmationData欄位中Recipient屬性的值。
Issuer String http://example.com/adfs/services/trust SAML斷言中Issuer欄位的值。

樣本

請求樣本

https://sts.aliyuncs.com/?Action=AssumeRoleWithSAML
&Format=xml
&Version=2015-04-01
&SignatureNonce=1521552885****
&Timestamp=2021-06-01T12:00:00Z
&RoleArn=acs:ram::123456789012****:role/adminrole
&SAMLProviderArn=acs:ram::123456789012****:saml-provider/company1
&SAMLAssertion=<base64_encoded_saml_assertion>
&Policy=<url_encoded_policy>
&DurationSeconds=3600
说明 由於SAMLAssertion參數較長,可能會導致GET請求失敗,請您使用POST方法發送此請求。

返回樣本

XML格式

<AssumeRoleResponse>
    <RequestId>6894B13B-6D71-4EF5-88FA-F32781734A7F</RequestId>
    <AssumedRoleUser>
        <arn>acs:sts::123456789012****:assumed-role/AdminRole/alice</arn>
        <AssumedRoleId>34458433936495****:alice</AssumedRoleId>
    </AssumedRoleUser>
    <Credentials>
        <AccessKeyId>STS.L4aBSCSJVMuKg5U1****</AccessKeyId>
        <AccessKeySecret>wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****</AccessKeySecret>
        <SecurityToken>********</SecurityToken>    
        <Expiration>2015-04-09T11:52:19Z</Expiration>
    </Credentials>
    <SAMLAssertionInfo>
        <SubjectType>persistent</SubjectType>
        <Subject>alice@example.com</Subject>
        <Recipient>https://signin.aliyun.com/saml-role/SSO</Recipient>
        <Issuer>http://example.com/adfs/services/trust</Issuer>
    </SAMLAssertionInfo>
</AssumeRoleResponse>         

JSON格式

{
    "Credentials": {
        "AccessKeyId": "STS.L4aBSCSJVMuKg5U1****",
        "AccessKeySecret": "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****",
        "Expiration": "2015-04-09T11:52:19Z",
        "SecurityToken": "********"
    },
    "AssumedRoleUser": {
        "arn": "acs:sts::1234567890123456:assumed-role/AdminRole/alice",
        "AssumedRoleId":"34458433936495****:alice"
        },
    "SAMLAssertionInfo": {
        "SubjectType": "persistent",
        "Subject": "alice@example.com",
        "Recipient": "https://signin.aliyun.com/saml-role/SSO",
        "Issuer": "http://example.com/adfs/services/trust"
    },
    "RequestId": "6894B13B-6D71-4EF5-88FA-F32781734A7F"
}         

錯誤碼

HttpCode 錯誤碼 錯誤資訊 描述
400 MissingParameter.SAMLAssertion Parameter SAMLAssertion is required. 缺少SAMLAssertion參數。
400 MissingParameter.SAMLProviderArn Parameter SAMLProviderArn is required. 缺少SAMLProviderArn參數。
400 MissingParameter.RoleArn Parameter RoleArn is required. 缺少RoleArn參數。
400 InvalidParameter.PolicyGrammar Invalid Policy. 無效的權限原則。
400 InvalidParameter.PolicySize The max size of policy string is 1024. 權限原則字串長度超限,最大不超過1024字元。
400 InvalidParameter.RoleSessionName The RoleSessionName is invalid. 角色會話名稱無效。
400 InvalidParameter.DurationSeconds The DurationSeconds is invalid. DurationSeconds無效。
404 EntityNotExist.SAMLProvider Can not find SAML provider. 找不到SAML身份供應商。
404 EntityNotExist.RoleArn The specified Role does not exists. 指定的角色不存在。
401 AuthenticationFail.IDPMetadata.Invalid The IdP Metadata of your SAML Provider is invalid. SAML身份供應商的IdP中繼資料無效。
401 AuthenticationFail.SAMLAssertion.Expired The SAML Assertion is expired. SAML斷言已到期。
401 AuthenticationFail.SAMLAssertion.Invalid The SAML Assertion is invalid. SAML斷言無效。