进行SAML角色SSO时,通过调用AssumeRoleWithSAML接口,获取扮演RAM角色的临时身份凭证(STS Token)。
接口说明
前提条件
- 确保已从外部身份提供商(IdP)获取到SAML响应。
- 确保已在RAM中创建了SAML身份提供商。具体操作,请参见创建SAML身份提供商或CreateSAMLProvider 。
- 确保已在RAM中创建了可信实体为SAML身份提供商的RAM角色。具体操作,请参见创建可信实体为身份提供商的RAM角色或CreateRole 。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
当前API暂无授权信息透出。
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
SAMLProviderArn | string | 是 | RAM中创建的SAML身份提供商的ARN。 格式: 您可以通过RAM控制台或API查看身份提供商的ARN。具体如下:
| acs:ram::123456789012****:saml-provider/company1 |
RoleArn | string | 是 | 要扮演的RAM角色的ARN。 该角色是可信实体为SAML身份提供商的RAM角色。更多信息,请参见创建可信实体为身份提供商的RAM角色或CreateRole。 格式: 您可以通过RAM控制台或API查看角色ARN。具体如下:
| acs:ram::123456789012****:role/adminrole |
SAMLAssertion | string | 是 | Base64编码后的SAML断言。 长度为4~100000个字符。 说明需要从IdP获取完整的SAML响应,不能是单独的SAML断言字段。 | base64_encoded_saml_assertion |
Policy | string | 否 | 为STS Token额外添加的一个权限策略,进一步限制STS Token的权限。具体如下:
长度为1~1024个字符。 | url_encoded_policy |
DurationSeconds | Long | 否 | Token有效期。单位:秒。 Token有效期最小值为900秒,最大值为 您可以通过CreateRole或UpdateRole接口设置角色最大会话时间 | 3600 |
说明由于AssumeRoleWithSAML接口使用SAML断言进行身份认证,可以匿名访问,因此不需要提供公共参数中的
Signature
、SignatureMethod
、SignatureVersion
和AccessKeyId
参数。返回参数
示例
请求示例
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
&公共请求参数
正常返回示例
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"
}
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>
错误码
Http code | 错误码 | 错误信息 |
---|---|---|
500 | InternalError | STS Server Internal Error happened, please send the RequestId to us. |
访问错误中心查看更多错误码。