'1.0', 'info' => ['style' => 'RPC', 'product' => 'Sts', 'version' => '2015-04-01'], 'directories' => [ [ 'children' => ['AssumeRole', 'AssumeRoleWithSAML', 'AssumeRoleWithOIDC'], 'type' => 'directory', 'title' => 'Role assumption', ], [ 'children' => ['GetCallerIdentity'], 'type' => 'directory', 'title' => 'Caller identity', ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ 'AssumeRole' => [ 'summary' => 'Obtains a Security Token Service (STS) token to assume a Resource Access Management (RAM) role.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'systemTags' => ['operationType' => 'get', 'riskType' => 'high', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'DurationSeconds', 'in' => 'query', 'schema' => ['description' => 'The validity period of the STS token. Unit: seconds.'."\n" ."\n" .'Minimum value: 900. Maximum value: the value of the `MaxSessionDuration` parameter. Default value: 3600.'."\n" ."\n" .'You can call the CreateRole or UpdateRole operation to configure the `MaxSessionDuration` parameter. For more information, see [CreateRole](~~28710~~) and [UpdateRole](~~28712~~).', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'title' => '', 'example' => '3600'], ], [ 'name' => 'Policy', 'in' => 'query', 'schema' => ['description' => 'The policy that specifies the permissions of the returned STS token. This allows you to implement more fine-grained access control.'."\n" ."\n" .'- If you specify this parameter, the permissions of the returned STS token are the intersection of the permissions defined in this policy and the permissions granted by the role\'s policy.'."\n" .'- If you do not specify this parameter, the returned STS token has all the permissions of the RAM role.'."\n" ."\n" .'The value must be 1 to 2,048 characters in length.'."\n" ."\n" .'For more information about policy elements and sample policies, see [Policy elements](~~93738~~) and [Overview of sample policies](~~210969~~).', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}'], ], [ 'name' => 'RoleArn', 'in' => 'query', 'schema' => ['description' => 'The Alibaba Cloud Resource Name (ARN) of the RAM role.'."\n" ."\n" .'The trusted entity of the RAM role is an Alibaba Cloud account. For more information, see [Create a RAM role for a trusted Alibaba Cloud account](~~93691~~) and [CreateRole](~~28710~~).'."\n" ."\n" .'Format: `acs:ram:::role/`.'."\n" ."\n" .'You can view the ARNs of RAM roles by using the RAM console or by calling API operations.'."\n" ."\n" .'- For more information about how to view the ARN of a RAM role in the RAM console, see the "How do I view the ARN of a RAM role?" section of the [FAQ about RAM roles and STS tokens](~~39744~~) topic.'."\n" .'- For more information about how to view the ARN by calling operations, see [ListRoles](~~28713~~) and [GetRole](~~28711~~).', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'acs:ram::123456789012****:role/adminrole'], ], [ 'name' => 'RoleSessionName', 'in' => 'query', 'schema' => ['description' => 'The name of the role session.'."\n" ."\n" .'The value is user-defined. In most cases, you can set this parameter to the identity of the user who calls the operation. For example, you can specify a username. You can specify `RoleSessionName` to identify API callers that assume the same RAM role in ActionTrail logs. This allows you to track the users that perform the operations.'."\n" ."\n" .'The name must be 2 to 64 characters in length, and can contain letters, digits, and the following special characters: `. @ - _`.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'alice'], ], [ 'name' => 'ExternalId', 'in' => 'query', 'schema' => ['description' => 'The external ID of the RAM role.'."\n" ."\n" .'The value of this parameter is provided by an external party and is used to prevent the confused deputy issue. For more information, see [Use external IDs to prevent the confused deputy issue](~~2361741~~).'."\n" ."\n" .'The ID must be 2 to 1,224 characters in length, and can contain letters, digits, and the following special characters: `= , . @ : / - _`. The regular expression for this parameter is `[\\w+=,.@:\\/-]*`.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'abcd1234'], ], [ 'name' => 'SourceIdentity', 'in' => 'query', 'schema' => ['type' => 'string', 'description' => 'The source identity information.'."\n" ."\n" .'When a user assumes a role, the source identity of the user can be specified as the initial identity of a session. The specified source identity persists throughout the role session and cannot be changed. This ensures operation traceability and security.'."\n" ."\n" .'The value must be 2 to 64 characters in length, and can contain letters, digits, and the following special characters: `=,.@-_`. The regular expression for this parameter is `[\\w+=,.@-]*`. The value cannot start with `acs:`, `aliyun:`, or `alibabacloud:`. These prefixes are internally used within Alibaba Cloud.', 'required' => false, 'title' => '', 'example' => 'Alice'], ], ], 'responses' => [ 200 => [ 'headers' => [], 'schema' => [ 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '6894B13B-6D71-4EF5-88FA-F32781734A7F'], 'AssumedRoleUser' => [ 'description' => 'The temporary identity that you use to assume the RAM role.', 'type' => 'object', 'properties' => [ 'AssumedRoleId' => ['description' => 'The ID of the temporary identity that you use to assume the RAM role.', 'type' => 'string', 'title' => '', 'example' => '34458433936495****:alice'], 'Arn' => ['description' => 'The ARN of the temporary identity that you use to assume the RAM role.', 'type' => 'string', 'title' => '', 'example' => 'acs:ram::123456789012****:role/adminrole/alice'], ], 'title' => '', 'example' => '', ], 'Credentials' => [ 'description' => 'The STS credentials.', 'type' => 'object', 'properties' => [ 'SecurityToken' => ['description' => 'The STS token.'."\n" ."\n" .'> Alibaba Cloud STS does not impose limits on the length of STS tokens. We recommend that you do not specify a maximum length for STS tokens.', 'type' => 'string', 'title' => '', 'example' => '********'], 'Expiration' => ['description' => 'The time when the STS token expires. The time is displayed in UTC.', 'type' => 'string', 'title' => '', 'example' => '2015-04-09T11:52:19Z'], 'AccessKeySecret' => ['description' => 'The AccessKey secret.', 'type' => 'string', 'title' => '', 'example' => 'wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****'], 'AccessKeyId' => ['description' => 'The AccessKey ID.', 'type' => 'string', 'title' => '', 'example' => 'STS.L4aBSCSJVMuKg5U1****'], ], 'title' => '', 'example' => '', ], 'SourceIdentity' => ['type' => 'string', 'description' => 'The source identity information.'."\n" ."\n" .'When a user assumes a role, the source identity of the user can be specified as the initial identity of a session. The specified source identity persists throughout the role session and cannot be changed. This ensures operation traceability and security.'."\n" ."\n" .'If the SourceIdentity parameter was not specified in the request, this field is omitted from the response.', 'title' => '', 'example' => 'Alice'], ], 'title' => '', 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ ['errorCode' => 'InvalidParameter.DurationSeconds', 'errorMessage' => 'The Min/Max value of DurationSeconds is 15min/1hr.', 'description' => 'DurationSeconds parameter is illegal, DurationSeconds minimum value is 15 minutes, maximum value is 1 hour'], ['errorCode' => 'InvalidParameter.ExternalId', 'errorMessage' => 'The parameter ExternalId is wrongly formed.', 'description' => 'Parameters'], ['errorCode' => 'InvalidParameter.RoleArn', 'errorMessage' => 'The parameter RoleArn is wrongly formed.', 'description' => 'Parameters'], ['errorCode' => 'InvalidParameter.RoleSessionName', 'errorMessage' => 'The parameter RoleSessionName is wrongly formed.', 'description' => ''], ['errorCode' => 'InvalidParameter.SerialNumber', 'errorMessage' => 'The parameter SerialNumber is wrongly formed.', 'description' => ''], ['errorCode' => 'InvalidParameter.TokenCode', 'errorMessage' => 'The parameter TokenCode is wrongly formed.', 'description' => ''], ['errorCode' => 'InvalidParameter.PolicyGrammar', 'errorMessage' => 'The parameter Policy has not passed grammar check.', 'description' => 'Parameter Policy syntax format check failed'], ['errorCode' => 'InvalidParameter.PolicySize', 'errorMessage' => 'The size of Policy must be smaller than 2048 bytes.', 'description' => 'The policy parameter is invalid. The policy length must be less than 2048 bytes.'], ['errorCode' => 'InvalidParameter.ContentType', 'errorMessage' => 'The ContentType request header must be either "application/json" or "application/x-www-form-urlencoded".', 'description' => ''], ], 403 => [ ['errorCode' => 'NoPermission', 'errorMessage' => 'You are not authorized to do this action. You should be authorized by RAM.', 'description' => ''], ['errorCode' => 'AuthenticationFail.ApiUsername', 'errorMessage' => 'The specified api username is not legal.', 'description' => ''], ['errorCode' => 'AuthenticationFail.ApiPassword', 'errorMessage' => 'The specified api password is not legal.', 'description' => ''], ], [ ['errorCode' => 'EntityNotExist.Role', 'errorMessage' => 'The specified Role not exists .', 'description' => ''], ], 500 => [ ['errorCode' => 'InternalError', 'errorMessage' => 'STS Server Internal Error happened, please send the RequestId to us.', 'description' => ''], ], ], 'title' => 'AssumeRole', 'description' => '### Prerequisites'."\n" ."\n" .'You cannot use an Alibaba Cloud account to call this operation. The requester of this operation can only be a RAM user or RAM role. Make sure that the AliyunSTSAssumeRoleAccess policy is attached to the requester. After this policy is attached to the requester, the requester has the management permissions on STS.'."\n" ."\n" .'If you do not attach the AliyunSTSAssumeRoleAccess policy to the requester, the following error message is returned:'."\n" ."\n" .'`You are not authorized to do this action. You should be authorized by RAM.`'."\n" ."\n" .'You can refer to the following information to troubleshoot the error:'."\n" ."\n" .'- Cause of the error: The policy that is required to assume a RAM role is not attached to the requester. To resolve this issue, attach the AliyunSTSAssumeRoleAccess policy or a custom policy to the requester. For more information, see [Can I specify the RAM role that a RAM user can assume?](~~39744~~) and [Grant permissions to a RAM user](~~116146~~).'."\n" .'- Cause of the error: The requester is not authorized to assume the RAM role. To resolve this issue, add the requester to the Principal element in the trust policy of the RAM role For more information, see [Edit the trust policy of a RAM role](~~116819~~).'."\n" ."\n" .'### Best practices'."\n" ."\n" .'An STS token is valid for a period of time after it is issued, and the number of STS tokens that can be issued within an interval is also limited. Therefore, we recommend that you configure a proper validity period for an STS token and repeatedly use the token within this period. This prevents frequent issuing of STS tokens from adversely affecting your services if a large number of requests are sent. For more information about the limit, see [Is the number of STS API requests limited?](~~39744~~) You can configure the `DurationSeconds` parameter to specify a validity period for an STS token.'."\n" ."\n" .'When you upload or download Object Storage Service (OSS) objects on mobile devices, a large number of STS API requests are sent. In this case, repeated use of an STS token may not meet your business requirements. To avoid the limit on STS API requests from affecting access to OSS, you can **add a signature to the URL of an OSS object**. For more information, see [Add signatures to URLs](~~31952~~) and [Obtain signature information from the server and upload data to OSS](~~31926~~).', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AssumeRole'], ], ], 'ramActions' => [ [ 'operationType' => 'get', 'ramAction' => [ 'action' => 'sts:AssumeRole', 'authLevel' => 'resource', 'actionConditions' => [ ['conditionKey' => 'sts:SourceIdentity', 'validationType' => 'conditional'], ], 'resources' => [ ['validationType' => 'always', 'product' => 'Sts', 'resourceType' => 'Role', 'arn' => 'acs:ram::{#accountId}:role/{#RoleName}'], ], ], 'additionalActions' => [ ['action' => 'sts:SetSourceIdentity', 'validationType' => 'conditional'], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6894B13B-6D71-4EF5-88FA-F32781734A7F\\",\\n \\"AssumedRoleUser\\": {\\n \\"AssumedRoleId\\": \\"34458433936495****:alice\\",\\n \\"Arn\\": \\"acs:ram::123456789012****:role/adminrole/alice\\"\\n },\\n \\"Credentials\\": {\\n \\"SecurityToken\\": \\"********\\",\\n \\"Expiration\\": \\"2015-04-09T11:52:19Z\\",\\n \\"AccessKeySecret\\": \\"wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****\\",\\n \\"AccessKeyId\\": \\"STS.L4aBSCSJVMuKg5U1****\\"\\n },\\n \\"SourceIdentity\\": \\"Alice\\"\\n}","type":"json"}]', 'requestParamsDescription' => 'For more information about common request parameters, see [Common parameters](~~315526~~).', ], 'AssumeRoleWithOIDC' => [ 'methods' => ['get', 'post'], 'schemes' => ['https'], 'security' => [ [ 'ARS_OIDC' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => ['operationType' => 'get', 'riskType' => 'high', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'OIDCProviderArn', 'in' => 'query', 'schema' => ['title' => '', 'description' => 'The Alibaba Cloud Resource Name (ARN) of the OIDC identity provider.'."\n" ."\n" .'You can view the ARN of the OIDC identity provider in the RAM console or by calling an API operation:'."\n" ."\n" .'- RAM console: For more information, see [View the information about an OIDC identity provider](~~327123~~).'."\n" .'- API: For more information, see [GetOIDCProvider](~~327126~~) or [ListOIDCProviders](~~327127~~).', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'acs:ram::113511544585****:oidc-provider/TestOidcIdp'], ], [ 'name' => 'RoleArn', 'in' => 'query', 'schema' => ['title' => '', 'description' => 'The ARN of the RAM role that you want to assume.'."\n" ."\n" .'You can view the ARN of the role in the RAM console or by calling an API operation:'."\n" ."\n" .'- RAM console: For more information, see [View the ARN of a RAM role](~~39744~~).'."\n" .'- API: For more information, see [ListRoles](~~28713~~) or [GetRole](~~28711~~).', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'acs:ram::113511544585****:role/testoidc'], ], [ 'name' => 'OIDCToken', 'in' => 'query', 'schema' => ['title' => '', 'description' => 'The OIDC token that is issued by an external IdP.'."\n" ."\n" .'The token must be 4 to 20,000 characters long.'."\n" ."\n" .'> Enter the original OIDC token. Do not Base64-decode the token.', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'eyJraWQiOiJKQzl3eHpyaHFKMGd0****'], ], [ 'name' => 'Policy', 'in' => 'query', 'schema' => ['title' => '', 'description' => 'An access policy to further restrict the permissions of the STS token.'."\n" ."\n" .'- If you specify this policy, the permissions of the STS token are the intersection of the permissions that are granted to the RAM role and the permissions that are specified in this policy.'."\n" .'- If you do not specify this policy, the STS token has the same permissions as the RAM role.'."\n" ."\n" .'The policy must be 1 to 2,048 characters long.', 'type' => 'string', 'required' => false, 'example' => '{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}'], ], [ 'name' => 'DurationSeconds', 'in' => 'query', 'schema' => ['title' => '', 'description' => 'The validity period of the token, in seconds.'."\n" ."\n" .'Valid values: 900 to the value of the `MaxSessionDuration` parameter. The default value is 3600.'."\n" ."\n" .'For more information about how to set the `MaxSessionDuration` parameter, see [CreateRole](~~28710~~) or [UpdateRole](~~28712~~).', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '3600'], ], [ 'name' => 'RoleSessionName', 'in' => 'query', 'schema' => ['title' => '', 'description' => 'The name of the role session.'."\n" ."\n" .'A custom parameter used to distinguish role sessions. The value is typically the identity of the user who calls the operation, such as a username. In ActionTrail, you can use the value of this parameter to identify the user who assumes the RAM role. This provides user-level access auditing.'."\n" ."\n" .'The name can contain letters, digits, periods (.), at signs (@), hyphens (-), and underscores (\\_).'."\n" ."\n" .'The name must be 2 to 64 characters long.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'TestOidcAssumedRoleSession'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'description' => 'The returned parameters.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '3D57EAD2-8723-1F26-B69C-F8707D8B565D'], 'OIDCTokenInfo' => [ 'description' => 'Information about the OIDC token.', 'type' => 'object', 'properties' => [ 'Subject' => ['description' => 'The subject of the OIDC token.'."\n" ."\n" .'This corresponds to the value of the `sub` field in the OIDC token.', 'type' => 'string', 'title' => '', 'example' => 'KryrkIdjylZb7agUgCEf****'], 'Issuer' => ['description' => 'The issuer of the OIDC token.'."\n" ."\n" .'This corresponds to the value of the `iss` field in the OIDC token.', 'type' => 'string', 'title' => '', 'example' => 'https://dev-xxxxxx.okta.com'], 'ClientIds' => ['description' => 'The audience of the OIDC token. Multiple audiences are separated by commas (,).'."\n" ."\n" .'This corresponds to the value of the `aud` field in the OIDC token.', 'type' => 'string', 'title' => '', 'example' => '496271242565057****'], 'ExpirationTime' => ['description' => 'The expiration time of the OIDC token.', 'type' => 'string', 'title' => '', 'example' => '2021-10-20T04:27:09Z'], 'IssuanceTime' => ['description' => 'The time when the OIDC token was issued.', 'type' => 'string', 'title' => '', 'example' => '2021-10-20T03:27:09Z'], 'VerificationInfo' => ['description' => 'The verification information for the OIDC token. For more information, see [Manage OIDC identity providers](~~327123~~).', 'type' => 'string', 'title' => '', 'example' => 'Success'], ], 'title' => '', 'example' => '', ], 'AssumedRoleUser' => [ 'description' => 'The assumed temporary identity.', 'type' => 'object', 'properties' => [ 'AssumedRoleId' => ['description' => 'The ID of the temporary identity.', 'type' => 'string', 'title' => '', 'example' => '33157794895460****'], 'Arn' => ['description' => 'The ARN of the temporary identity.', 'type' => 'string', 'title' => '', 'example' => 'acs:ram::113511544585****:role/testoidc/TestOidcAssumedRoleSession'], ], 'title' => '', 'example' => '', ], 'Credentials' => [ 'description' => 'The temporary access credential (STS token).', 'type' => 'object', 'properties' => [ 'SecurityToken' => ['description' => 'The security token.'."\n" ."\n" .'> The length of the security token is not fixed. Do not set a maximum length for the security token.', 'type' => 'string', 'title' => '', 'example' => 'CAIShwJ1q6Ft5B2yfSjIr5bSEsj4g7BihPWGWHz****'], 'Expiration' => ['description' => 'The time when the token expires, in Coordinated Universal Time (UTC).', 'type' => 'string', 'title' => '', 'example' => '2021-10-20T04:27:09Z'], 'AccessKeySecret' => ['description' => 'The AccessKey secret.', 'type' => 'string', 'title' => '', 'example' => 'CVwjCkNzTMupZ8NbTCxCBRq3K16jtcWFTJAyBEv2****'], 'AccessKeyId' => ['description' => 'The AccessKey ID.', 'type' => 'string', 'title' => '', 'example' => 'STS.NUgYrLnoC37mZZCNnAbez****'], ], 'title' => '', 'example' => '', ], 'SourceIdentity' => ['type' => 'string', 'description' => 'The source identity.'."\n" ."\n" .'The value of this identity persists throughout chained role-assuming sessions and cannot be changed. This ensures operational traceability and security.'."\n" ."\n" .'This parameter is returned only if a source identity is configured.', 'title' => '', 'example' => 'Alice'], ], 'title' => '', 'example' => '', ], ], ], 'title' => 'AssumeRoleWithOIDC', 'summary' => 'For role-based single sign-on (SSO) that uses OpenID Connect (OIDC), call the AssumeRoleWithOIDC operation to obtain a temporary identity credential (a Security Token Service token) to assume a RAM role.', 'description' => '### Prerequisites'."\n" ."\n" .'- Obtain an OpenID Connect (OIDC) token from an external identity provider (IdP).'."\n" .'- Create an OIDC identity provider in RAM. For more information, see [Create an OIDC identity provider](~~327123~~) or [CreateOIDCProvider](~~327135~~).'."\n" .'- Create a RAM role that uses an OIDC identity provider as the trusted entity. For more information, see [Create a RAM role for a trusted identity provider](~~116805~~) or [CreateRole](~~28710~~).', 'requestParamsDescription' => '> The AssumeRoleWithOIDC operation uses an OIDC token for identity authentication and allows anonymous access. Therefore, you do not need to specify the `Signature`, `SignatureMethod`, `SignatureVersion`, or `AccessKeyId` common request parameters. For more information, see [Common parameters](~~315526~~).', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AssumeRoleWithOIDC'], ], ], 'ramActions' => [], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3D57EAD2-8723-1F26-B69C-F8707D8B565D\\",\\n \\"OIDCTokenInfo\\": {\\n \\"Subject\\": \\"KryrkIdjylZb7agUgCEf****\\",\\n \\"Issuer\\": \\"https://dev-xxxxxx.okta.com\\",\\n \\"ClientIds\\": \\"496271242565057****\\",\\n \\"ExpirationTime\\": \\"2021-10-20T04:27:09Z\\",\\n \\"IssuanceTime\\": \\"2021-10-20T03:27:09Z\\",\\n \\"VerificationInfo\\": \\"Success\\"\\n },\\n \\"AssumedRoleUser\\": {\\n \\"AssumedRoleId\\": \\"33157794895460****\\",\\n \\"Arn\\": \\"acs:ram::113511544585****:role/testoidc/TestOidcAssumedRoleSession\\"\\n },\\n \\"Credentials\\": {\\n \\"SecurityToken\\": \\"CAIShwJ1q6Ft5B2yfSjIr5bSEsj4g7BihPWGWHz****\\",\\n \\"Expiration\\": \\"2021-10-20T04:27:09Z\\",\\n \\"AccessKeySecret\\": \\"CVwjCkNzTMupZ8NbTCxCBRq3K16jtcWFTJAyBEv2****\\",\\n \\"AccessKeyId\\": \\"STS.NUgYrLnoC37mZZCNnAbez****\\"\\n },\\n \\"SourceIdentity\\": \\"Alice\\"\\n}","type":"json"}]', ], 'AssumeRoleWithSAML' => [ 'summary' => 'For role-based single sign-on (SSO) that uses Security Assertion Markup Language (SAML), call the AssumeRoleWithSAML operation to obtain a temporary identity credential (a Security Token Service (STS) token) for a RAM role.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'Anonymous' => [], ], ], 'operationType' => 'readAndWrite', 'systemTags' => ['operationType' => 'get', 'riskType' => 'high', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'SAMLProviderArn', 'in' => 'query', 'schema' => ['description' => 'The Alibaba Cloud Resource Name (ARN) of the SAML IdP that is created in RAM.'."\n" ."\n" .'Format: `acs:ram:::saml-provider/`.'."\n" ."\n" .'You can view the ARN of the IdP in the RAM console or by calling an API operation:'."\n" ."\n" .'- RAM console: For more information, see [View the basic information of a SAML identity provider](~~116795~~).'."\n" ."\n" .'- API: For more information, see [GetSAMLProvider](~~186833~~) or [ListSAMLProviders](~~186851~~).', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'acs:ram::123456789012****:saml-provider/company1', 'title' => ''], ], [ 'name' => 'RoleArn', 'in' => 'query', 'schema' => ['description' => 'The ARN of the RAM role to assume.'."\n" ."\n" .'The trusted entity of the RAM role is a SAML IdP. For more information, see [Create a RAM role for an identity provider](~~116805~~) or [CreateRole](~~28710~~).'."\n" ."\n" .'Format: `acs:ram:::role/`.'."\n" ."\n" .'You can view the ARN of the role in the RAM console or by calling an API operation:'."\n" ."\n" .'- RAM console: For more information, see [How do I view the ARN of a RAM role?](~~39744~~).'."\n" ."\n" .'- API: For more information, see [ListRoles](~~28713~~) or [GetRole](~~28711~~).', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'acs:ram::123456789012****:role/adminrole', 'title' => ''], ], [ 'name' => 'SAMLAssertion', 'in' => 'query', 'schema' => ['description' => 'The Base64-encoded SAML assertion.'."\n" ."\n" .'The value must be 4 to 100,000 characters in length.'."\n" ."\n" .'> Obtain the complete SAML response from the IdP. Do not use only the SAML assertion field.', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'base64_encoded_saml_assertion', 'title' => ''], ], [ 'name' => 'Policy', 'in' => 'query', 'schema' => ['description' => 'An access policy to further limit the permissions of the STS token. This parameter works as follows:'."\n" ."\n" .'- If you specify this policy, the permissions of the STS token are the intersection of the permissions that are granted to the RAM role and the permissions that are specified in this policy.'."\n" ."\n" .'- If you do not specify this policy, the STS token has all the permissions that are granted to the RAM role.'."\n" ."\n" .'The value must be 1 to 2,048 characters in length.', 'type' => 'string', 'required' => false, 'example' => 'url_encoded_policy', 'title' => ''], ], [ 'name' => 'DurationSeconds', 'in' => 'query', 'schema' => ['description' => 'The expiration duration of the token. Unit: seconds.'."\n" ."\n" .'The minimum value is 900 seconds. The maximum value is the value of the `MaxSessionDuration` parameter. The default value is 3600 seconds.'."\n" ."\n" .'You can set the `MaxSessionDuration` parameter when you call the CreateRole or UpdateRole operation. For more information, see [CreateRole](~~28710~~) or [UpdateRole](~~28712~~).', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '3600', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6894B13B-6D71-4EF5-88FA-F32781734A7F', 'title' => ''], 'SAMLAssertionInfo' => [ 'description' => 'The information about the SAML assertion.', 'type' => 'object', 'properties' => [ 'SubjectType' => ['description' => 'The format of the NameID element in the SAML assertion. If the prefix is `urn:oasis:names:tc:SAML:2.0:nameid-format:`, the prefix is removed. Examples: `persistent` and `transient`.', 'type' => 'string', 'example' => 'persistent', 'title' => ''], 'Subject' => ['description' => 'The value of the `Subject - NameID` field in the SAML assertion.', 'type' => 'string', 'example' => 'alice@example.com', 'title' => ''], 'Issuer' => ['description' => 'The value of the `Issuer` field in the SAML assertion.', 'type' => 'string', 'example' => 'http://example.com/adfs/services/trust', 'title' => ''], 'Recipient' => ['description' => 'The value of the `Recipient` attribute in the `Subject - SubjectConfirmation - SubjectConfirmationData` field of the SAML assertion.', 'type' => 'string', 'example' => 'https://signin.aliyun.com/saml-role/SSO', 'title' => ''], ], 'title' => '', 'example' => '', ], 'AssumedRoleUser' => [ 'description' => 'The temporary identity of the assumed role.', 'type' => 'object', 'properties' => [ 'AssumedRoleId' => ['description' => 'The ID of the temporary identity.', 'type' => 'string', 'example' => '34458433936495****:alice', 'title' => ''], 'Arn' => ['description' => 'The ARN of the temporary identity.', 'type' => 'string', 'example' => 'acs:sts::123456789012****:assumed-role/AdminRole/alice', 'title' => ''], ], 'title' => '', 'example' => '', ], 'Credentials' => [ 'description' => 'The access credential.', 'type' => 'object', 'properties' => [ 'SecurityToken' => ['description' => 'The security token.'."\n" ."\n" .'> The security token has a variable length. Do not impose a maximum length limit on the security token.', 'type' => 'string', 'example' => '********', 'title' => ''], 'Expiration' => ['description' => 'The expiration time of the token. The time is in UTC.', 'type' => 'string', 'example' => '2015-04-09T11:52:19Z', 'title' => ''], 'AccessKeySecret' => ['description' => 'The AccessKey secret.', 'type' => 'string', 'example' => 'wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****', 'title' => ''], 'AccessKeyId' => ['description' => 'The AccessKey ID.', 'type' => 'string', 'example' => 'STS.L4aBSCSJVMuKg5U1****', 'title' => ''], ], 'title' => '', 'example' => '', ], 'SourceIdentity' => ['description' => 'The source identity.'."\n" ."\n" .'When you assume a role, you can specify a source identity for the role user. The source identity is used as the initial identity of the session. The value of the source identity persists throughout chained role-assuming sessions and cannot be changed. This ensures the traceability and security of operations.'."\n" ."\n" .'This parameter is not returned if you do not set a source identity.', 'type' => 'string', 'example' => 'Alice', 'title' => ''], ], 'title' => '', 'example' => '', ], ], ], 'errorCodes' => [ 500 => [ ['errorCode' => 'InternalError', 'errorMessage' => 'STS Server Internal Error happened, please send the RequestId to us.', 'description' => ''], ], ], 'title' => 'AssumeRoleWithSAML', 'description' => '### Prerequisites'."\n" ."\n" .'- Obtain a SAML response from an external identity provider (IdP).'."\n" ."\n" .'- Create a SAML identity provider in Resource Access Management (RAM). For more information, see [Create a SAML identity provider](~~116083~~) or [CreateSAMLProvider](~~186846~~).'."\n" ."\n" .'- Create a RAM role for a SAML identity provider. For more information, see [Create a RAM role for an identity provider](~~116805~~) or [CreateRole](~~28710~~).', 'requestParamsDescription' => '> Because the AssumeRoleWithSAML operation uses a SAML assertion for identity authentication and allows anonymous access, you do not need to specify the common request parameters `Signature`, `SignatureMethod`, `SignatureVersion`, or `AccessKeyId`. For more information about common request parameters, see [Common request parameters](~~315526~~).', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [], ], 'ramActions' => [], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6894B13B-6D71-4EF5-88FA-F32781734A7F\\",\\n \\"SAMLAssertionInfo\\": {\\n \\"SubjectType\\": \\"persistent\\",\\n \\"Subject\\": \\"alice@example.com\\",\\n \\"Issuer\\": \\"http://example.com/adfs/services/trust\\",\\n \\"Recipient\\": \\"https://signin.aliyun.com/saml-role/SSO\\"\\n },\\n \\"AssumedRoleUser\\": {\\n \\"AssumedRoleId\\": \\"34458433936495****:alice\\",\\n \\"Arn\\": \\"acs:sts::123456789012****:assumed-role/AdminRole/alice\\"\\n },\\n \\"Credentials\\": {\\n \\"SecurityToken\\": \\"********\\",\\n \\"Expiration\\": \\"2015-04-09T11:52:19Z\\",\\n \\"AccessKeySecret\\": \\"wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****\\",\\n \\"AccessKeyId\\": \\"STS.L4aBSCSJVMuKg5U1****\\"\\n },\\n \\"SourceIdentity\\": \\"Alice\\"\\n}","type":"json"}]', ], 'GetCallerIdentity' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [], 'responses' => [ 200 => [ 'schema' => [ 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ 'IdentityType' => ['description' => 'The type of the identity. Valid values:'."\n" ."\n" .'- Account: an Alibaba Cloud account.'."\n" .'- RAMUser: a RAM user.'."\n" .'- AssumedRoleUser: a RAM role.', 'type' => 'string', 'title' => '', 'example' => 'RAMUser'], 'AccountId' => ['description' => 'The ID of the Alibaba Cloud account to which the current caller belongs.', 'type' => 'string', 'title' => '', 'example' => '196813200012****'], 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '3C87BF47-3724-5443-ADC1-5AEAD9A03EB1'], 'PrincipalId' => ['description' => 'The ID of the principal.', 'type' => 'string', 'title' => '', 'example' => '28877424437521****'], 'UserId' => ['description' => 'The user ID. Details are as follows:'."\n" ."\n" .'- If the caller is an Alibaba Cloud account, the ID of the Alibaba Cloud account is returned.'."\n" .'- If the caller is a RAM user, the ID of the RAM user is returned.'."\n" ."\n" .'> This parameter is returned only when the caller is an Alibaba Cloud account or a RAM user.', 'type' => 'string', 'title' => '', 'example' => '216959339000****'], 'Arn' => ['description' => 'The Alibaba Cloud Resource Name (ARN) of the current caller.', 'type' => 'string', 'title' => '', 'example' => 'acs:ram::196813200012****:user/admin'], 'RoleId' => ['description' => 'The ID of the RAM role.'."\n" ."\n" .'> This parameter is returned only when the caller is a RAM role.', 'type' => 'string', 'title' => '', 'example' => '33537620082992****'], ], 'title' => '', ], ], ], 'errorCodes' => [ 500 => [ ['errorCode' => 'InternalError', 'errorMessage' => 'STS Server Internal Error happened, please send the RequestId to us.', 'description' => ''], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"IdentityType\\": \\"RAMUser\\",\\n \\"AccountId\\": \\"196813200012****\\",\\n \\"RequestId\\": \\"3C87BF47-3724-5443-ADC1-5AEAD9A03EB1\\",\\n \\"PrincipalId\\": \\"28877424437521****\\",\\n \\"UserId\\": \\"216959339000****\\",\\n \\"Arn\\": \\"acs:ram::196813200012****:user/admin\\",\\n \\"RoleId\\": \\"33537620082992****\\"\\n}","type":"json"}]', 'title' => 'GetCallerIdentity', 'summary' => 'A call to the GetCallerIdentity operation returns information about the identity of the current caller.', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetCallerIdentity'], ], ], 'ramActions' => [], 'operationType' => 'read', ], ], 'endpoints' => [ ['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-beijing.aliyuncs.com', 'endpoint' => 'sts.cn-beijing.aliyuncs.com', 'vpc' => 'sts-vpc.cn-beijing.aliyuncs.com'], ['regionId' => 'cn-heyuan', 'regionName' => 'China (Heyuan)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-heyuan.aliyuncs.com', 'endpoint' => 'sts.cn-heyuan.aliyuncs.com', 'vpc' => 'sts-vpc.cn-heyuan.aliyuncs.com'], ['regionId' => 'cn-zhangjiakou', 'regionName' => 'China (Zhangjiakou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-zhangjiakou.aliyuncs.com', 'endpoint' => 'sts.cn-zhangjiakou.aliyuncs.com', 'vpc' => 'sts-vpc.cn-zhangjiakou.aliyuncs.com'], ['regionId' => 'ap-northeast-2', 'regionName' => 'South Korea (Seoul)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.ap-northeast-2.aliyuncs.com', 'endpoint' => 'sts.ap-northeast-2.aliyuncs.com', 'vpc' => 'sts-vpc.ap-northeast-2.aliyuncs.com'], ['regionId' => 'ap-northeast-1', 'regionName' => 'Japan (Tokyo)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.ap-northeast-1.aliyuncs.com', 'endpoint' => 'sts.ap-northeast-1.aliyuncs.com', 'vpc' => 'sts-vpc.ap-northeast-1.aliyuncs.com'], ['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.ap-southeast-1.aliyuncs.com', 'endpoint' => 'sts.ap-southeast-1.aliyuncs.com', 'vpc' => 'sts-vpc.ap-southeast-1.aliyuncs.com'], ['regionId' => 'ap-southeast-3', 'regionName' => 'Malaysia (Kuala Lumpur)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.ap-southeast-3.aliyuncs.com', 'endpoint' => 'sts.ap-southeast-3.aliyuncs.com', 'vpc' => 'sts-vpc.ap-southeast-3.aliyuncs.com'], ['regionId' => 'ap-southeast-5', 'regionName' => 'Indonesia (Jakarta)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.ap-southeast-5.aliyuncs.com', 'endpoint' => 'sts.ap-southeast-5.aliyuncs.com', 'vpc' => 'sts-vpc.ap-southeast-5.aliyuncs.com'], ['regionId' => 'ap-southeast-7', 'regionName' => 'Thailand (Bangkok)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.ap-southeast-7.aliyuncs.com', 'endpoint' => 'sts.ap-southeast-7.aliyuncs.com', 'vpc' => 'sts-vpc.ap-southeast-7.aliyuncs.com'], ['regionId' => 'cn-wulanchabu', 'regionName' => 'China (Ulanqab)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-wulanchabu.aliyuncs.com', 'endpoint' => 'sts.cn-wulanchabu.aliyuncs.com', 'vpc' => 'sts-vpc.cn-wulanchabu.aliyuncs.com'], ['regionId' => 'cn-qingdao', 'regionName' => 'China (Qingdao)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-qingdao.aliyuncs.com', 'endpoint' => 'sts.cn-qingdao.aliyuncs.com', 'vpc' => 'sts-vpc.cn-qingdao.aliyuncs.com'], ['regionId' => 'cn-wuhan-lr', 'regionName' => 'China (Wuhan - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-wuhan-lr.aliyuncs.com', 'endpoint' => 'sts.cn-wuhan-lr.aliyuncs.com', 'vpc' => 'sts-vpc.cn-wuhan-lr.aliyuncs.com'], ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-shanghai.aliyuncs.com', 'endpoint' => 'sts.cn-shanghai.aliyuncs.com', 'vpc' => 'sts-vpc.cn-shanghai.aliyuncs.com'], ['regionId' => 'cn-hongkong', 'regionName' => 'China (Hong Kong)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-hongkong.aliyuncs.com', 'endpoint' => 'sts.cn-hongkong.aliyuncs.com', 'vpc' => 'sts-vpc.cn-hongkong.aliyuncs.com'], ['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-shenzhen.aliyuncs.com', 'endpoint' => 'sts.cn-shenzhen.aliyuncs.com', 'vpc' => 'sts-vpc.cn-shenzhen.aliyuncs.com'], ['regionId' => 'cn-nanjing', 'regionName' => 'China (Nanjing - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-nanjing.aliyuncs.com', 'endpoint' => 'sts.cn-nanjing.aliyuncs.com', 'vpc' => 'sts-vpc.cn-nanjing.aliyuncs.com'], ['regionId' => 'cn-fuzhou', 'regionName' => 'China (Fuzhou - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-fuzhou.aliyuncs.com', 'endpoint' => 'sts.cn-fuzhou.aliyuncs.com', 'vpc' => 'sts-vpc.cn-fuzhou.aliyuncs.com'], ['regionId' => 'cn-chengdu', 'regionName' => 'China (Chengdu)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-chengdu.aliyuncs.com', 'endpoint' => 'sts.cn-chengdu.aliyuncs.com', 'vpc' => 'sts-vpc.cn-chengdu.aliyuncs.com'], ['regionId' => 'cn-guangzhou', 'regionName' => 'China (Guangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-guangzhou.aliyuncs.com', 'endpoint' => 'sts.cn-guangzhou.aliyuncs.com', 'vpc' => 'sts-vpc.cn-guangzhou.aliyuncs.com'], ['regionId' => 'cn-huhehaote', 'regionName' => 'China (Hohhot)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-huhehaote.aliyuncs.com', 'endpoint' => 'sts.cn-huhehaote.aliyuncs.com', 'vpc' => 'sts-vpc.cn-huhehaote.aliyuncs.com'], ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'sts.cn-hangzhou.aliyuncs.com', 'endpoint' => 'sts.cn-hangzhou.aliyuncs.com', 'vpc' => 'sts-vpc.cn-hangzhou.aliyuncs.com'], ['regionId' => 'eu-west-1', 'regionName' => 'UK (London)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'sts.eu-west-1.aliyuncs.com', 'endpoint' => 'sts.eu-west-1.aliyuncs.com', 'vpc' => 'sts-vpc.eu-west-1.aliyuncs.com'], ['regionId' => 'eu-central-1', 'regionName' => 'Germany (Frankfurt)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'sts.eu-central-1.aliyuncs.com', 'endpoint' => 'sts.eu-central-1.aliyuncs.com', 'vpc' => 'sts-vpc.eu-central-1.aliyuncs.com'], ['regionId' => 'us-east-1', 'regionName' => 'US (Virginia)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'sts.us-east-1.aliyuncs.com', 'endpoint' => 'sts.us-east-1.aliyuncs.com', 'vpc' => 'sts-vpc.us-east-1.aliyuncs.com'], ['regionId' => 'us-west-1', 'regionName' => 'US (Silicon Valley)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'sts.us-west-1.aliyuncs.com', 'endpoint' => 'sts.us-west-1.aliyuncs.com', 'vpc' => 'sts-vpc.us-west-1.aliyuncs.com'], ['regionId' => 'na-south-1', 'regionName' => 'Mexico', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'sts.na-south-1.aliyuncs.com', 'endpoint' => 'sts.na-south-1.aliyuncs.com', 'vpc' => 'sts-vpc.na-south-1.aliyuncs.com'], ['regionId' => 'me-east-1', 'regionName' => 'UAE (Dubai)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'sts.me-east-1.aliyuncs.com', 'endpoint' => 'sts.me-east-1.aliyuncs.com', 'vpc' => 'sts-vpc.me-east-1.aliyuncs.com'], ['regionId' => 'me-central-1', 'regionName' => 'Saudi Arabia (Riyadh)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'sts.me-central-1.aliyuncs.com', 'endpoint' => 'sts.me-central-1.aliyuncs.com', 'vpc' => 'sts-vpc.me-central-1.aliyuncs.com'], ['regionId' => 'cn-shenzhen-finance-1', 'regionName' => 'China South 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'sts.aliyuncs.com', 'endpoint' => 'sts.aliyuncs.com', 'vpc' => 'sts-vpc.cn-shenzhen-finance-1.aliyuncs.com'], ['regionId' => 'cn-beijing-finance-1', 'regionName' => 'China North 2 Finance (Preview)', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'sts.cn-beijing-finance-1.aliyuncs.com', 'endpoint' => 'sts.cn-beijing-finance-1.aliyuncs.com', 'vpc' => 'sts-vpc.cn-beijing-finance-1.aliyuncs.com'], ['regionId' => 'cn-shanghai-finance-1', 'regionName' => 'China East 2 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'sts.cn-shanghai-finance-1.aliyuncs.com', 'endpoint' => 'sts.cn-shanghai-finance-1.aliyuncs.com', 'vpc' => 'sts-vpc.cn-shanghai-finance-1.aliyuncs.com'], ['regionId' => 'cn-hangzhou-finance', 'regionName' => 'China East 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'sts.aliyuncs.com', 'endpoint' => 'sts.aliyuncs.com', 'vpc' => ''], ], 'errorCodes' => [ ['code' => 'AuthenticationFail.OIDCToken.AudienceNotMatch', 'message' => 'Invalid audience.', 'http_code' => 401, 'description' => 'audience mismatch in Token'], ['code' => 'AuthenticationFail.OIDCToken.Expired', 'message' => 'This JsonWebToken is expired.', 'http_code' => 401, 'description' => ''], ['code' => 'AuthenticationFail.OIDCToken.Invalid', 'message' => 'The Jwt content is invalid that cannot be recognized.', 'http_code' => 401, 'description' => 'Jwt content is invalid and not recognized'], ['code' => 'AuthenticationFail.OIDCToken.Invalid', 'message' => 'The algorithm HS256 that be specified in Jwt header is unknown.', 'http_code' => 401, 'description' => 'The HS256 algorithm specified in the Jwt header is unknown.'], ['code' => 'AuthenticationFail.OIDCToken.Invalid', 'message' => 'Cannot decode base64 encoded response(format invalided).', 'http_code' => 401, 'description' => 'The format is incorrect and the base64 encoded return result cannot be decoded.'], ['code' => 'AuthenticationFail.OIDCToken.Invalid', 'message' => 'The number of Jwt field should be divided into 3 parts with \'.\' .', 'http_code' => 401, 'description' => 'Jwt needs to be able to be divided into 3 parts by the \'.\' character.'], ['code' => 'AuthenticationFail.OIDCToken.Invalid', 'message' => 'The OIDCToken can not empty.', 'http_code' => 401, 'description' => 'OIDCToken field cannot be null.'], ['code' => 'AuthenticationFail.OIDCToken.InvalidSignature', 'message' => 'OIDC token validate failed: invalid signature.', 'http_code' => 401, 'description' => 'Verification signature of ODIC token shi bai'], ['code' => 'AuthenticationFail.OIDCToken.IssuerConfigurationBroken', 'message' => 'Cannot find the specific key from the discovery, kid is %s.', 'http_code' => 401, 'description' => 'The kid of the public key specified in OIDC Token to verify the signature is not provided in jwks uri of idp, and the kid is% s'], ['code' => 'AuthenticationFail.OIDCToken.IssuerNotMatch', 'message' => 'The issuer in the OIDC Token doesn\'t match the OIDC Provider registered.', 'http_code' => 401, 'description' => 'The issuer field in the OIDC token does not match the registered OIDC provider.'], ['code' => 'AuthenticationFail.OIDCToken.PublicKeyFingerprintMismatch', 'message' => 'The https fingerprint of this discovery is invalid.', 'http_code' => 401, 'description' => 'Verify that the fingerprint is not in the list of fingerprints for the corresponding OIDC identity provider'], ['code' => 'AuthenticationFail.SAMLAssertion.Expired', 'message' => 'Response IssueInstant is either too old or with date in the future, value:%s.', 'http_code' => 401, 'description' => 'SAML Assertion Expired'], ['code' => 'AuthenticationFail.SAMLAssertion.Invalid', 'message' => 'Bearer SubjectConfirmation invalidated by not before which is forbidden.', 'http_code' => 401, 'description' => 'SAML Assertion SubjectConfirmation cannot contain NotBefore attributes.'], ['code' => 'AuthenticationFail.SAMLAssertion.Invalid', 'message' => 'Can\'t find the intended audience in at least one AudienceRestriction.', 'http_code' => 401, 'description' => ''], ['code' => 'AuthenticationFail.SAMLAssertion.Invalid', 'message' => 'The rolearn and samlprovider pair can not be found in the Role Attibute of the SAMLAssertion.', 'http_code' => 401, 'description' => 'There is no RoleArn and SamlProvider information in the SAML Assertion. It needs to exist in Attribute form in the AttributeStatement. The format is roleArn,providerArn'], ['code' => 'AuthenticationFail.SAMLAssertion.Invalid', 'message' => 'Cannot decode base64 encoded response(format invalided).', 'http_code' => 401, 'description' => 'The SAML Assertion is malformed and is not a standard Base64 string.'], ['code' => 'AuthenticationFail.SAMLAssertion.Invalid', 'message' => 'The assertion schema validation failed.', 'http_code' => 401, 'description' => ''], ['code' => 'EntityNotExist.Role', 'message' => 'The role not exists: %s.', 'http_code' => 404, 'description' => 'Role played by bu cun'], ['code' => 'EntityNotExist.SAMLProvider', 'message' => 'Can not find SAML provider by ARN:%s.', 'http_code' => 404, 'description' => 'Cannot find the corresponding through ARM'], ['code' => 'EntityNotExist.SAMLProvider', 'message' => 'Parameter SAMLProviderArn is not valid.', 'http_code' => 404, 'description' => 'Invalid Arn for SAML identity provider.'], ['code' => 'EntityNotExist.User', 'message' => 'account not exists.', 'http_code' => 404, 'description' => 'Account does not exist'], ['code' => 'EntityNotExist.User', 'message' => 'The identity account is not exists.', 'http_code' => 404, 'description' => 'The identity account is not exists.'], ['code' => 'InvalidParameter', 'message' => 'Invalid role arn format:%s.', 'http_code' => 400, 'description' => 'The role arn format is incorrect.'], ['code' => 'InvalidParameter.AssumeRoleFor', 'message' => 'The parameter AssumeRoleFor is wrongly formed.', 'http_code' => 400, 'description' => 'Parameter AssumeRoleFor format is illegal'], ['code' => 'InvalidParameter.DurationSeconds', 'message' => 'The Min/Max value of DurationSeconds is 15min/1hr.', 'http_code' => 400, 'description' => 'DurationSeconds parameter is illegal, DurationSeconds minimum value is 15 minutes, maximum value is 1 hour'], ['code' => 'InvalidParameter.DurationSeconds', 'message' => 'The Min/Max value of DurationSeconds is %s.', 'http_code' => 400, 'description' => 'DurationSeconds parameter is illegal.'], ['code' => 'InvalidParameter.DurationSeconds', 'message' => 'The Min/Max value of DurationSeconds is 15min/12hr.', 'http_code' => 400, 'description' => 'DurationSeconds parameter is illegal, DurationSeconds minimum value is 15 minutes, maximum value is 12 hour'."\n"], ['code' => 'InvalidParameter.ExternalId', 'message' => 'The parameter ExternalId is wrongly formed.', 'http_code' => 400, 'description' => 'Parameters'], ['code' => 'InvalidParameter.Policy.StarCount', 'message' => 'The count of star in policy document\'s value field is limited to %s.', 'http_code' => 400, 'description' => 'The number of * in the policy exceeds the maximum limit.'], ['code' => 'InvalidParameter.Policy.StarCount', 'message' => 'The count of star in policy document\'s value field is illegal.', 'http_code' => 400, 'description' => 'The number of * in the policy exceeds the maximum limit.'."\n"], ['code' => 'InvalidParameter.PolicyGrammar', 'message' => 'The parameter Policy has not passed grammar check.', 'http_code' => 400, 'description' => 'Parameter Policy syntax format check failed'], ['code' => 'InvalidParameter.PolicyGrammar', 'message' => 'Invalid Policy.', 'http_code' => 400, 'description' => 'Invalid parameter Policy.'], ['code' => 'InvalidParameter.PolicySize', 'message' => 'The size of Policy must be smaller than 2048 bytes.', 'http_code' => 400, 'description' => 'The policy parameter is invalid. The policy length must be less than 2048 bytes.'], ['code' => 'InvalidParameter.RoleArn', 'message' => 'The RoleArn can not empty.', 'http_code' => 400, 'description' => 'Parameter RoleArn cannot be wei kong zhi'], ['code' => 'InvalidParameter.RoleArn', 'message' => 'The parameter RoleArn is wrongly formed.', 'http_code' => 400, 'description' => 'Parameters'], ['code' => 'InvalidParameter.RoleSessionName', 'message' => 'The parameter RoleSessionName is wrongly formed.', 'http_code' => 400, 'description' => ''], ['code' => 'InvalidParameter.RoleSessionName', 'message' => 'The RoleSessionName can not empty.', 'http_code' => 400, 'description' => 'The parameter RoleSessionName cannot be null.'], ['code' => 'InvalidParameter.UserSessionName', 'message' => 'The parameter UserSessionName is invalid.', 'http_code' => 400, 'description' => 'Invalid parameter UserSessionName'."\n"], ['code' => 'InvalidVersion', 'message' => 'Specified parameter Version is not valid.', 'http_code' => 400, 'description' => 'Incorrect STS version number'], ['code' => 'ISVAuthenticationFail.SignatureNotMatch', 'message' => 'The IspSignature does not match.', 'http_code' => 401, 'description' => 'IspSignature signatures do not match.'], ['code' => 'MissingAccessKeyId', 'message' => 'AccessKeyId is mandatory for this action.', 'http_code' => 400, 'description' => 'The operation must have a AccessKeyId.'], ['code' => 'MissingParameter.OIDCProviderArn', 'message' => 'Parameter OIDCProviderArn is required.', 'http_code' => 400, 'description' => 'Missing required parameter OIDCProviderArn'], ['code' => 'MissingParameter.RoleSessionName', 'message' => 'Parameter RoleSessionName is required.', 'http_code' => 400, 'description' => 'Missing required parameter RoleSessionName.'], ['code' => 'NoPermission', 'message' => 'Roles may not be assumed by root accounts.', 'http_code' => 403, 'description' => 'Roles may not be assumed by root accounts.'], ['code' => 'NoPermission', 'message' => 'You are not authorized to do this action.', 'http_code' => 403, 'description' => 'You are not authorized to do this action.'], ['code' => 'NotSupported', 'message' => 'The identity type is not supported for this action.', 'http_code' => 403, 'description' => 'This operation is not supported for the identity type.'], ['code' => 'InvalidParameter.Conditions', 'message' => 'The value of Conditions is invalid.', 'http_code' => 400, 'description' => 'Conditions parameter is illegal'], ], 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetCallerIdentity'], ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AssumeRole'], ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AssumeRoleWithOIDC'], ['threshold' => '-1', 'countWindow' => 1, 'regionId' => '*'], ], ], 'ram' => [ 'productCode' => 'Sts', 'productName' => 'Resource Access Management', 'ramCodes' => ['sts'], 'ramLevel' => 'RESOURCE', 'ramConditions' => [ [ 'name' => 'acs:Service', 'schema' => ['type' => 'String', 'description' => 'The identifier of the cloud service to which the role can be passed. This condition key is only applicable to the PassRole action. Example value: actiontrail.aliyuncs.com.'], ], [ 'name' => 'ram:ServiceNames', 'schema' => ['type' => 'Array', 'description' => 'The identifiers of the cloud services that the service role can trust. This is a multi-valued field. Example value: [\\\\\\"ecs.aliyun.com\\\\\\", \\\\\\"rds.aliyuncs.com\\\\\\"]'], ], [ 'name' => 'sts:SourceIdentity', 'schema' => ['type' => 'String', 'description' => 'The source identity information set when assuming the role.'], ], [ 'name' => 'ram:TrustedPrincipalTypes', 'schema' => [ 'type' => 'Array', 'description' => 'The types of trusted principals for the role. This is a multi-valued field.', 'enums' => ['RAM', 'Service', 'Federated-SAMLProvider', 'Federated-OIDCProvider'], ], ], ], 'ramActions' => [ [ 'apiName' => 'AssumeRole', 'description' => '', 'operationType' => 'get', 'additionalActions' => [ ['action' => 'sts:SetSourceIdentity', 'validationType' => 'conditional'], ], 'ramAction' => [ 'action' => 'sts:AssumeRole', 'authLevel' => 'resource', 'actionConditions' => [ ['conditionKey' => 'sts:SourceIdentity', 'validationType' => 'conditional'], ], 'resources' => [ ['validationType' => 'always', 'product' => 'Sts', 'resourceType' => 'Role', 'arn' => 'acs:ram::{#accountId}:role/{#RoleName}'], ], ], ], ], 'resourceTypes' => [ ['validationType' => 'always', 'resourceType' => 'Role', 'arn' => 'acs:ram::{#accountId}:role/{#RoleName}'], ], ], ];