进行SAML角色SSO时,通过调用AssumeRoleWithSAML接口,获取扮演RAM角色的临时身份凭证(STS Token)。

前提条件

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String AssumeRoleWithSAML

要执行的操作。取值:AssumeRoleWithSAML

SAMLProviderArn String acs:ram::123456789012****:saml-provider/company1

RAM中创建的SAML身份提供商的ARN。

格式:acs:ram::<account_id>:saml-provider/<saml_provider_id>

您可以通过RAM控制台或API查看身份提供商的ARN。具体如下:

RoleArn String acs:ram::123456789012****:role/adminrole

要扮演的RAM角色的ARN。

该角色是可信实体为SAML身份提供商的RAM角色。更多信息,请参见创建可信实体为身份提供商的RAM角色CreateRole

格式:acs:ram::<account_id>:role/<role_name>

您可以通过RAM控制台或API查看角色ARN。具体如下:

SAMLAssertion String base64_encoded_saml_assertion

Base64编码后的SAML断言。

长度为4~100000个字符。

说明 需要从IdP获取完整的SAML响应,不能是单独的SAML断言字段。
Policy String url_encoded_policy

为STS Token额外添加的一个权限策略,进一步限制STS Token的权限。具体如下:

  • 如果指定该权限策略,则STS Token最终的权限取RAM角色权限策略与该权限策略的交集。
  • 如果不指定该权限策略,则STS Token最终的权限就是RAM角色的权限。

长度为1~1024个字符。

DurationSeconds Long 3600

Token有效期。单位:秒。

Token有效期最小值为900秒,最大值为MaxSessionDuration设置的时间,默认值为3600秒。

您可以通过CreateRole或UpdateRole接口设置角色最大会话时间MaxSessionDuration。更多信息,请参见CreateRoleUpdateRole

说明 由于AssumeRoleWithSAML接口使用SAML断言进行身份认证,可以匿名访问,因此不需要提供公共参数中的SignatureSignatureMethodSignatureVersionAccessKeyId参数。

返回数据

名称 类型 示例值 描述
RequestId String 6894B13B-6D71-4EF5-88FA-F32781734A7F

请求ID。

SAMLAssertionInfo Object

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字段的值。

Issuer String http://example.com/adfs/services/trust

SAML断言中Issuer字段的值。

Recipient String https://signin.aliyun.com/saml-role/SSO

SAML断言中Subject - SubjectConfirmation - SubjectConfirmationData字段中Recipient属性的值。

AssumedRoleUser Object

角色扮演临时身份。

AssumedRoleId String 34458433936495****:alice

临时身份的ID。

Arn String acs:sts::123456789012****:assumed-role/AdminRole/alice

临时身份的ARN。

Credentials Object

访问凭证。

SecurityToken String ********

安全令牌。

Expiration String 2015-04-09T11:52:19Z

Token到期失效时间(UTC时间)。

AccessKeySecret String wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****

访问密钥。

AccessKeyId String STS.L4aBSCSJVMuKg5U1****

访问密钥ID。

示例

请求示例

https://sts.aliyuncs.com/?Action=AssumeRoleWithSAML
&SAMLProviderArn=acs:ram::123456789012****:saml-provider/company1
&RoleArn=acs:ram::123456789012****:role/adminrole
&SAMLAssertion=base64_encoded_saml_assertion
&DurationSeconds=3600
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<AssumeRoleWithSAMLResponse>
    <Credentials>
        <AccessKeyId>STS.L4aBSCSJVMuKg5U1****</AccessKeyId>
        <AccessKeySecret>wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****</AccessKeySecret>
        <Expiration>2015-04-09T11:52:19Z</Expiration>
        <SecurityToken>********</SecurityToken>
    </Credentials>
    <AssumedRoleUser>
        <arn>acs:sts::1234567890123456:assumed-role/AdminRole/alice</arn>
        <AssumedRoleId>34458433936495****:alice</AssumedRoleId>
    </AssumedRoleUser>
    <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>
    <RequestId>6894B13B-6D71-4EF5-88FA-F32781734A7F</RequestId>
</AssumeRoleWithSAMLResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/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"
}

错误码

访问错误中心查看更多错误码。