Lesson 35 - Get Compute Auth Token Working

This commit is contained in:
Norman Lansing
2026-02-28 12:32:28 -05:00
parent 1d477ee42a
commit 4fde462bce
7743 changed files with 1397833 additions and 18 deletions

View File

@@ -0,0 +1,411 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/sts/model/PolicyDescriptorType.h>
#include <aws/sts/model/Tag.h>
#include <aws/sts/model/ProvidedContext.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class AssumeRoleRequest : public STSRequest
{
public:
AWS_STS_API AssumeRoleRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "AssumeRole"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The Amazon Resource Name (ARN) of the role to assume.</p>
*/
inline const Aws::String& GetRoleArn() const{ return m_roleArn; }
inline bool RoleArnHasBeenSet() const { return m_roleArnHasBeenSet; }
inline void SetRoleArn(const Aws::String& value) { m_roleArnHasBeenSet = true; m_roleArn = value; }
inline void SetRoleArn(Aws::String&& value) { m_roleArnHasBeenSet = true; m_roleArn = std::move(value); }
inline void SetRoleArn(const char* value) { m_roleArnHasBeenSet = true; m_roleArn.assign(value); }
inline AssumeRoleRequest& WithRoleArn(const Aws::String& value) { SetRoleArn(value); return *this;}
inline AssumeRoleRequest& WithRoleArn(Aws::String&& value) { SetRoleArn(std::move(value)); return *this;}
inline AssumeRoleRequest& WithRoleArn(const char* value) { SetRoleArn(value); return *this;}
///@}
///@{
/**
* <p>An identifier for the assumed role session.</p> <p>Use the role session name
* to uniquely identify a session when the same role is assumed by different
* principals or for different reasons. In cross-account scenarios, the role
* session name is visible to, and can be logged by the account that owns the role.
* The role session name is also used in the ARN of the assumed role principal.
* This means that subsequent cross-account API requests that use the temporary
* security credentials will expose the role session name to the external account
* in their CloudTrail logs.</p> <p>The regex used to validate this parameter is a
* string of characters consisting of upper- and lower-case alphanumeric characters
* with no spaces. You can also include underscores or any of the following
* characters: =,.@-</p>
*/
inline const Aws::String& GetRoleSessionName() const{ return m_roleSessionName; }
inline bool RoleSessionNameHasBeenSet() const { return m_roleSessionNameHasBeenSet; }
inline void SetRoleSessionName(const Aws::String& value) { m_roleSessionNameHasBeenSet = true; m_roleSessionName = value; }
inline void SetRoleSessionName(Aws::String&& value) { m_roleSessionNameHasBeenSet = true; m_roleSessionName = std::move(value); }
inline void SetRoleSessionName(const char* value) { m_roleSessionNameHasBeenSet = true; m_roleSessionName.assign(value); }
inline AssumeRoleRequest& WithRoleSessionName(const Aws::String& value) { SetRoleSessionName(value); return *this;}
inline AssumeRoleRequest& WithRoleSessionName(Aws::String&& value) { SetRoleSessionName(std::move(value)); return *this;}
inline AssumeRoleRequest& WithRoleSessionName(const char* value) { SetRoleSessionName(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Names (ARNs) of the IAM managed policies that you want to
* use as managed session policies. The policies must exist in the same account as
* the role.</p> <p>This parameter is optional. You can provide up to 10 managed
* policy ARNs. However, the plaintext that you use for both inline and managed
* session policies can't exceed 2,048 characters. For more information about ARNs,
* see <a
* href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon
* Resource Names (ARNs) and Amazon Web Services Service Namespaces</a> in the
* Amazon Web Services General Reference.</p> <p>An Amazon Web Services
* conversion compresses the passed inline session policy, managed policy ARNs, and
* session tags into a packed binary format that has a separate limit. Your request
* can fail for this limit even if your plaintext meets the other requirements. The
* <code>PackedPolicySize</code> response element indicates by percentage how close
* the policies and tags for your request are to the upper size limit.</p>
* <p>Passing policies to this operation returns new temporary credentials. The
* resulting session's permissions are the intersection of the role's
* identity-based policy and the session policies. You can use the role's temporary
* credentials in subsequent Amazon Web Services API calls to access resources in
* the account that owns the role. You cannot use session policies to grant more
* permissions than those allowed by the identity-based policy of the role that is
* being assumed. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::Vector<PolicyDescriptorType>& GetPolicyArns() const{ return m_policyArns; }
inline bool PolicyArnsHasBeenSet() const { return m_policyArnsHasBeenSet; }
inline void SetPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { m_policyArnsHasBeenSet = true; m_policyArns = value; }
inline void SetPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { m_policyArnsHasBeenSet = true; m_policyArns = std::move(value); }
inline AssumeRoleRequest& WithPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { SetPolicyArns(value); return *this;}
inline AssumeRoleRequest& WithPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { SetPolicyArns(std::move(value)); return *this;}
inline AssumeRoleRequest& AddPolicyArns(const PolicyDescriptorType& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(value); return *this; }
inline AssumeRoleRequest& AddPolicyArns(PolicyDescriptorType&& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(std::move(value)); return *this; }
///@}
///@{
/**
* <p>An IAM policy in JSON format that you want to use as an inline session
* policy.</p> <p>This parameter is optional. Passing policies to this operation
* returns new temporary credentials. The resulting session's permissions are the
* intersection of the role's identity-based policy and the session policies. You
* can use the role's temporary credentials in subsequent Amazon Web Services API
* calls to access resources in the account that owns the role. You cannot use
* session policies to grant more permissions than those allowed by the
* identity-based policy of the role that is being assumed. For more information,
* see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p> <p>The plaintext that you use for
* both inline and managed session policies can't exceed 2,048 characters. The JSON
* policy characters can be any ASCII character from the space character to the end
* of the valid character list (\u0020 through \u00FF). It can also include the tab
* (\u0009), linefeed (\u000A), and carriage return (\u000D) characters.</p>
* <p>An Amazon Web Services conversion compresses the passed inline session
* policy, managed policy ARNs, and session tags into a packed binary format that
* has a separate limit. Your request can fail for this limit even if your
* plaintext meets the other requirements. The <code>PackedPolicySize</code>
* response element indicates by percentage how close the policies and tags for
* your request are to the upper size limit.</p>
*/
inline const Aws::String& GetPolicy() const{ return m_policy; }
inline bool PolicyHasBeenSet() const { return m_policyHasBeenSet; }
inline void SetPolicy(const Aws::String& value) { m_policyHasBeenSet = true; m_policy = value; }
inline void SetPolicy(Aws::String&& value) { m_policyHasBeenSet = true; m_policy = std::move(value); }
inline void SetPolicy(const char* value) { m_policyHasBeenSet = true; m_policy.assign(value); }
inline AssumeRoleRequest& WithPolicy(const Aws::String& value) { SetPolicy(value); return *this;}
inline AssumeRoleRequest& WithPolicy(Aws::String&& value) { SetPolicy(std::move(value)); return *this;}
inline AssumeRoleRequest& WithPolicy(const char* value) { SetPolicy(value); return *this;}
///@}
///@{
/**
* <p>The duration, in seconds, of the role session. The value specified can range
* from 900 seconds (15 minutes) up to the maximum session duration set for the
* role. The maximum session duration setting can have a value from 1 hour to 12
* hours. If you specify a value higher than this setting or the administrator
* setting (whichever is lower), the operation fails. For example, if you specify a
* session duration of 12 hours, but your administrator set the maximum session
* duration to 6 hours, your operation fails. </p> <p>Role chaining limits your
* Amazon Web Services CLI or Amazon Web Services API role session to a maximum of
* one hour. When you use the <code>AssumeRole</code> API operation to assume a
* role, you can specify the duration of your role session with the
* <code>DurationSeconds</code> parameter. You can specify a parameter value of up
* to 43200 seconds (12 hours), depending on the maximum session duration setting
* for your role. However, if you assume a role using role chaining and provide a
* <code>DurationSeconds</code> parameter value greater than one hour, the
* operation fails. To learn how to view the maximum value for your role, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session">View
* the Maximum Session Duration Setting for a Role</a> in the <i>IAM User
* Guide</i>.</p> <p>By default, the value is set to <code>3600</code> seconds.
* </p> <p>The <code>DurationSeconds</code> parameter is separate from the
* duration of a console session that you might request using the returned
* credentials. The request to the federation endpoint for a console sign-in token
* takes a <code>SessionDuration</code> parameter that specifies the maximum length
* of the console session. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html">Creating
* a URL that Enables Federated Users to Access the Amazon Web Services Management
* Console</a> in the <i>IAM User Guide</i>.</p>
*/
inline int GetDurationSeconds() const{ return m_durationSeconds; }
inline bool DurationSecondsHasBeenSet() const { return m_durationSecondsHasBeenSet; }
inline void SetDurationSeconds(int value) { m_durationSecondsHasBeenSet = true; m_durationSeconds = value; }
inline AssumeRoleRequest& WithDurationSeconds(int value) { SetDurationSeconds(value); return *this;}
///@}
///@{
/**
* <p>A list of session tags that you want to pass. Each session tag consists of a
* key name and an associated value. For more information about session tags, see
* <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html">Tagging
* Amazon Web Services STS Sessions</a> in the <i>IAM User Guide</i>.</p> <p>This
* parameter is optional. You can pass up to 50 session tags. The plaintext session
* tag keys cant exceed 128 characters, and the values cant exceed 256
* characters. For these and additional limits, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length">IAM
* and STS Character Limits</a> in the <i>IAM User Guide</i>.</p> <p>An
* Amazon Web Services conversion compresses the passed inline session policy,
* managed policy ARNs, and session tags into a packed binary format that has a
* separate limit. Your request can fail for this limit even if your plaintext
* meets the other requirements. The <code>PackedPolicySize</code> response element
* indicates by percentage how close the policies and tags for your request are to
* the upper size limit.</p> <p>You can pass a session tag with the same
* key as a tag that is already attached to the role. When you do, session tags
* override a role tag with the same key. </p> <p>Tag keyvalue pairs are not case
* sensitive, but case is preserved. This means that you cannot have separate
* <code>Department</code> and <code>department</code> tag keys. Assume that the
* role has the <code>Department</code>=<code>Marketing</code> tag and you pass the
* <code>department</code>=<code>engineering</code> session tag.
* <code>Department</code> and <code>department</code> are not saved as separate
* tags, and the session tag passed in the request takes precedence over the role
* tag.</p> <p>Additionally, if you used temporary credentials to perform this
* operation, the new session inherits any transitive session tags from the calling
* session. If you pass a session tag with the same key as an inherited tag, the
* operation fails. To view the inherited tags for a session, see the CloudTrail
* logs. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_ctlogs">Viewing
* Session Tags in CloudTrail</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
inline AssumeRoleRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
inline AssumeRoleRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
inline AssumeRoleRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
inline AssumeRoleRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
///@}
///@{
/**
* <p>A list of keys for session tags that you want to set as transitive. If you
* set a tag key as transitive, the corresponding key and value passes to
* subsequent sessions in a role chain. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_role-chaining">Chaining
* Roles with Session Tags</a> in the <i>IAM User Guide</i>.</p> <p>This parameter
* is optional. When you set session tags as transitive, the session policy and
* session tags packed binary limit is not affected.</p> <p>If you choose not to
* specify a transitive tag key, then no tags are passed from this session to any
* subsequent sessions.</p>
*/
inline const Aws::Vector<Aws::String>& GetTransitiveTagKeys() const{ return m_transitiveTagKeys; }
inline bool TransitiveTagKeysHasBeenSet() const { return m_transitiveTagKeysHasBeenSet; }
inline void SetTransitiveTagKeys(const Aws::Vector<Aws::String>& value) { m_transitiveTagKeysHasBeenSet = true; m_transitiveTagKeys = value; }
inline void SetTransitiveTagKeys(Aws::Vector<Aws::String>&& value) { m_transitiveTagKeysHasBeenSet = true; m_transitiveTagKeys = std::move(value); }
inline AssumeRoleRequest& WithTransitiveTagKeys(const Aws::Vector<Aws::String>& value) { SetTransitiveTagKeys(value); return *this;}
inline AssumeRoleRequest& WithTransitiveTagKeys(Aws::Vector<Aws::String>&& value) { SetTransitiveTagKeys(std::move(value)); return *this;}
inline AssumeRoleRequest& AddTransitiveTagKeys(const Aws::String& value) { m_transitiveTagKeysHasBeenSet = true; m_transitiveTagKeys.push_back(value); return *this; }
inline AssumeRoleRequest& AddTransitiveTagKeys(Aws::String&& value) { m_transitiveTagKeysHasBeenSet = true; m_transitiveTagKeys.push_back(std::move(value)); return *this; }
inline AssumeRoleRequest& AddTransitiveTagKeys(const char* value) { m_transitiveTagKeysHasBeenSet = true; m_transitiveTagKeys.push_back(value); return *this; }
///@}
///@{
/**
* <p>A unique identifier that might be required when you assume a role in another
* account. If the administrator of the account to which the role belongs provided
* you with an external ID, then provide that value in the <code>ExternalId</code>
* parameter. This value can be any string, such as a passphrase or account number.
* A cross-account role is usually set up to trust everyone in an account.
* Therefore, the administrator of the trusting account might send an external ID
* to the administrator of the trusted account. That way, only someone with the ID
* can assume the role, rather than everyone in the account. For more information
* about the external ID, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html">How
* to Use an External ID When Granting Access to Your Amazon Web Services Resources
* to a Third Party</a> in the <i>IAM User Guide</i>.</p> <p>The regex used to
* validate this parameter is a string of characters consisting of upper- and
* lower-case alphanumeric characters with no spaces. You can also include
* underscores or any of the following characters: =,.@:/-</p>
*/
inline const Aws::String& GetExternalId() const{ return m_externalId; }
inline bool ExternalIdHasBeenSet() const { return m_externalIdHasBeenSet; }
inline void SetExternalId(const Aws::String& value) { m_externalIdHasBeenSet = true; m_externalId = value; }
inline void SetExternalId(Aws::String&& value) { m_externalIdHasBeenSet = true; m_externalId = std::move(value); }
inline void SetExternalId(const char* value) { m_externalIdHasBeenSet = true; m_externalId.assign(value); }
inline AssumeRoleRequest& WithExternalId(const Aws::String& value) { SetExternalId(value); return *this;}
inline AssumeRoleRequest& WithExternalId(Aws::String&& value) { SetExternalId(std::move(value)); return *this;}
inline AssumeRoleRequest& WithExternalId(const char* value) { SetExternalId(value); return *this;}
///@}
///@{
/**
* <p>The identification number of the MFA device that is associated with the user
* who is making the <code>AssumeRole</code> call. Specify this value if the trust
* policy of the role being assumed includes a condition that requires MFA
* authentication. The value is either the serial number for a hardware device
* (such as <code>GAHT12345678</code>) or an Amazon Resource Name (ARN) for a
* virtual device (such as <code>arn:aws:iam::123456789012:mfa/user</code>).</p>
* <p>The regex used to validate this parameter is a string of characters
* consisting of upper- and lower-case alphanumeric characters with no spaces. You
* can also include underscores or any of the following characters: =,.@-</p>
*/
inline const Aws::String& GetSerialNumber() const{ return m_serialNumber; }
inline bool SerialNumberHasBeenSet() const { return m_serialNumberHasBeenSet; }
inline void SetSerialNumber(const Aws::String& value) { m_serialNumberHasBeenSet = true; m_serialNumber = value; }
inline void SetSerialNumber(Aws::String&& value) { m_serialNumberHasBeenSet = true; m_serialNumber = std::move(value); }
inline void SetSerialNumber(const char* value) { m_serialNumberHasBeenSet = true; m_serialNumber.assign(value); }
inline AssumeRoleRequest& WithSerialNumber(const Aws::String& value) { SetSerialNumber(value); return *this;}
inline AssumeRoleRequest& WithSerialNumber(Aws::String&& value) { SetSerialNumber(std::move(value)); return *this;}
inline AssumeRoleRequest& WithSerialNumber(const char* value) { SetSerialNumber(value); return *this;}
///@}
///@{
/**
* <p>The value provided by the MFA device, if the trust policy of the role being
* assumed requires MFA. (In other words, if the policy includes a condition that
* tests for MFA). If the role being assumed requires MFA and if the
* <code>TokenCode</code> value is missing or expired, the <code>AssumeRole</code>
* call returns an "access denied" error.</p> <p>The format for this parameter, as
* described by its regex pattern, is a sequence of six numeric digits.</p>
*/
inline const Aws::String& GetTokenCode() const{ return m_tokenCode; }
inline bool TokenCodeHasBeenSet() const { return m_tokenCodeHasBeenSet; }
inline void SetTokenCode(const Aws::String& value) { m_tokenCodeHasBeenSet = true; m_tokenCode = value; }
inline void SetTokenCode(Aws::String&& value) { m_tokenCodeHasBeenSet = true; m_tokenCode = std::move(value); }
inline void SetTokenCode(const char* value) { m_tokenCodeHasBeenSet = true; m_tokenCode.assign(value); }
inline AssumeRoleRequest& WithTokenCode(const Aws::String& value) { SetTokenCode(value); return *this;}
inline AssumeRoleRequest& WithTokenCode(Aws::String&& value) { SetTokenCode(std::move(value)); return *this;}
inline AssumeRoleRequest& WithTokenCode(const char* value) { SetTokenCode(value); return *this;}
///@}
///@{
/**
* <p>The source identity specified by the principal that is calling the
* <code>AssumeRole</code> operation.</p> <p>You can require users to specify a
* source identity when they assume a role. You do this by using the
* <code>sts:SourceIdentity</code> condition key in a role trust policy. You can
* use source identity information in CloudTrail logs to determine who took actions
* with a role. You can use the <code>aws:SourceIdentity</code> condition key to
* further control access to Amazon Web Services resources based on the value of
* source identity. For more information about using source identity, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html">Monitor
* and control actions taken with assumed roles</a> in the <i>IAM User
* Guide</i>.</p> <p>The regex used to validate this parameter is a string of
* characters consisting of upper- and lower-case alphanumeric characters with no
* spaces. You can also include underscores or any of the following characters:
* =,.@-. You cannot use a value that begins with the text <code>aws:</code>. This
* prefix is reserved for Amazon Web Services internal use.</p>
*/
inline const Aws::String& GetSourceIdentity() const{ return m_sourceIdentity; }
inline bool SourceIdentityHasBeenSet() const { return m_sourceIdentityHasBeenSet; }
inline void SetSourceIdentity(const Aws::String& value) { m_sourceIdentityHasBeenSet = true; m_sourceIdentity = value; }
inline void SetSourceIdentity(Aws::String&& value) { m_sourceIdentityHasBeenSet = true; m_sourceIdentity = std::move(value); }
inline void SetSourceIdentity(const char* value) { m_sourceIdentityHasBeenSet = true; m_sourceIdentity.assign(value); }
inline AssumeRoleRequest& WithSourceIdentity(const Aws::String& value) { SetSourceIdentity(value); return *this;}
inline AssumeRoleRequest& WithSourceIdentity(Aws::String&& value) { SetSourceIdentity(std::move(value)); return *this;}
inline AssumeRoleRequest& WithSourceIdentity(const char* value) { SetSourceIdentity(value); return *this;}
///@}
///@{
/**
* <p>A list of previously acquired trusted context assertions in the format of a
* JSON array. The trusted context assertion is signed and encrypted by Amazon Web
* Services STS.</p> <p>The following is an example of a
* <code>ProvidedContext</code> value that includes a single trusted context
* assertion and the ARN of the context provider from which the trusted context
* assertion was generated.</p> <p>
* <code>[{"ProviderArn":"arn:aws:iam::aws:contextProvider/IdentityCenter","ContextAssertion":"trusted-context-assertion"}]</code>
* </p>
*/
inline const Aws::Vector<ProvidedContext>& GetProvidedContexts() const{ return m_providedContexts; }
inline bool ProvidedContextsHasBeenSet() const { return m_providedContextsHasBeenSet; }
inline void SetProvidedContexts(const Aws::Vector<ProvidedContext>& value) { m_providedContextsHasBeenSet = true; m_providedContexts = value; }
inline void SetProvidedContexts(Aws::Vector<ProvidedContext>&& value) { m_providedContextsHasBeenSet = true; m_providedContexts = std::move(value); }
inline AssumeRoleRequest& WithProvidedContexts(const Aws::Vector<ProvidedContext>& value) { SetProvidedContexts(value); return *this;}
inline AssumeRoleRequest& WithProvidedContexts(Aws::Vector<ProvidedContext>&& value) { SetProvidedContexts(std::move(value)); return *this;}
inline AssumeRoleRequest& AddProvidedContexts(const ProvidedContext& value) { m_providedContextsHasBeenSet = true; m_providedContexts.push_back(value); return *this; }
inline AssumeRoleRequest& AddProvidedContexts(ProvidedContext&& value) { m_providedContextsHasBeenSet = true; m_providedContexts.push_back(std::move(value)); return *this; }
///@}
private:
Aws::String m_roleArn;
bool m_roleArnHasBeenSet = false;
Aws::String m_roleSessionName;
bool m_roleSessionNameHasBeenSet = false;
Aws::Vector<PolicyDescriptorType> m_policyArns;
bool m_policyArnsHasBeenSet = false;
Aws::String m_policy;
bool m_policyHasBeenSet = false;
int m_durationSeconds;
bool m_durationSecondsHasBeenSet = false;
Aws::Vector<Tag> m_tags;
bool m_tagsHasBeenSet = false;
Aws::Vector<Aws::String> m_transitiveTagKeys;
bool m_transitiveTagKeysHasBeenSet = false;
Aws::String m_externalId;
bool m_externalIdHasBeenSet = false;
Aws::String m_serialNumber;
bool m_serialNumberHasBeenSet = false;
Aws::String m_tokenCode;
bool m_tokenCodeHasBeenSet = false;
Aws::String m_sourceIdentity;
bool m_sourceIdentityHasBeenSet = false;
Aws::Vector<ProvidedContext> m_providedContexts;
bool m_providedContextsHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,136 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/model/Credentials.h>
#include <aws/sts/model/AssumedRoleUser.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains the response to a successful <a>AssumeRole</a> request, including
* temporary Amazon Web Services credentials that can be used to make Amazon Web
* Services requests. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleResponse">AWS
* API Reference</a></p>
*/
class AssumeRoleResult
{
public:
AWS_STS_API AssumeRoleResult();
AWS_STS_API AssumeRoleResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API AssumeRoleResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The temporary security credentials, which include an access key ID, a secret
* access key, and a security (or session) token.</p> <p>The size of the
* security token that STS API operations return is not fixed. We strongly
* recommend that you make no assumptions about the maximum size.</p>
*/
inline const Credentials& GetCredentials() const{ return m_credentials; }
inline void SetCredentials(const Credentials& value) { m_credentials = value; }
inline void SetCredentials(Credentials&& value) { m_credentials = std::move(value); }
inline AssumeRoleResult& WithCredentials(const Credentials& value) { SetCredentials(value); return *this;}
inline AssumeRoleResult& WithCredentials(Credentials&& value) { SetCredentials(std::move(value)); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers
* that you can use to refer to the resulting temporary security credentials. For
* example, you can reference these credentials as a principal in a resource-based
* policy by using the ARN or assumed role ID. The ARN and ID include the
* <code>RoleSessionName</code> that you specified when you called
* <code>AssumeRole</code>. </p>
*/
inline const AssumedRoleUser& GetAssumedRoleUser() const{ return m_assumedRoleUser; }
inline void SetAssumedRoleUser(const AssumedRoleUser& value) { m_assumedRoleUser = value; }
inline void SetAssumedRoleUser(AssumedRoleUser&& value) { m_assumedRoleUser = std::move(value); }
inline AssumeRoleResult& WithAssumedRoleUser(const AssumedRoleUser& value) { SetAssumedRoleUser(value); return *this;}
inline AssumeRoleResult& WithAssumedRoleUser(AssumedRoleUser&& value) { SetAssumedRoleUser(std::move(value)); return *this;}
///@}
///@{
/**
* <p>A percentage value that indicates the packed size of the session policies and
* session tags combined passed in the request. The request fails if the packed
* size is greater than 100 percent, which means the policies and tags exceeded the
* allowed space.</p>
*/
inline int GetPackedPolicySize() const{ return m_packedPolicySize; }
inline void SetPackedPolicySize(int value) { m_packedPolicySize = value; }
inline AssumeRoleResult& WithPackedPolicySize(int value) { SetPackedPolicySize(value); return *this;}
///@}
///@{
/**
* <p>The source identity specified by the principal that is calling the
* <code>AssumeRole</code> operation.</p> <p>You can require users to specify a
* source identity when they assume a role. You do this by using the
* <code>sts:SourceIdentity</code> condition key in a role trust policy. You can
* use source identity information in CloudTrail logs to determine who took actions
* with a role. You can use the <code>aws:SourceIdentity</code> condition key to
* further control access to Amazon Web Services resources based on the value of
* source identity. For more information about using source identity, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html">Monitor
* and control actions taken with assumed roles</a> in the <i>IAM User
* Guide</i>.</p> <p>The regex used to validate this parameter is a string of
* characters consisting of upper- and lower-case alphanumeric characters with no
* spaces. You can also include underscores or any of the following characters:
* =,.@-</p>
*/
inline const Aws::String& GetSourceIdentity() const{ return m_sourceIdentity; }
inline void SetSourceIdentity(const Aws::String& value) { m_sourceIdentity = value; }
inline void SetSourceIdentity(Aws::String&& value) { m_sourceIdentity = std::move(value); }
inline void SetSourceIdentity(const char* value) { m_sourceIdentity.assign(value); }
inline AssumeRoleResult& WithSourceIdentity(const Aws::String& value) { SetSourceIdentity(value); return *this;}
inline AssumeRoleResult& WithSourceIdentity(Aws::String&& value) { SetSourceIdentity(std::move(value)); return *this;}
inline AssumeRoleResult& WithSourceIdentity(const char* value) { SetSourceIdentity(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline AssumeRoleResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline AssumeRoleResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Credentials m_credentials;
AssumedRoleUser m_assumedRoleUser;
int m_packedPolicySize;
Aws::String m_sourceIdentity;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,209 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/sts/model/PolicyDescriptorType.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class AssumeRoleWithSAMLRequest : public STSRequest
{
public:
AWS_STS_API AssumeRoleWithSAMLRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "AssumeRoleWithSAML"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The Amazon Resource Name (ARN) of the role that the caller is assuming.</p>
*/
inline const Aws::String& GetRoleArn() const{ return m_roleArn; }
inline bool RoleArnHasBeenSet() const { return m_roleArnHasBeenSet; }
inline void SetRoleArn(const Aws::String& value) { m_roleArnHasBeenSet = true; m_roleArn = value; }
inline void SetRoleArn(Aws::String&& value) { m_roleArnHasBeenSet = true; m_roleArn = std::move(value); }
inline void SetRoleArn(const char* value) { m_roleArnHasBeenSet = true; m_roleArn.assign(value); }
inline AssumeRoleWithSAMLRequest& WithRoleArn(const Aws::String& value) { SetRoleArn(value); return *this;}
inline AssumeRoleWithSAMLRequest& WithRoleArn(Aws::String&& value) { SetRoleArn(std::move(value)); return *this;}
inline AssumeRoleWithSAMLRequest& WithRoleArn(const char* value) { SetRoleArn(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Name (ARN) of the SAML provider in IAM that describes the
* IdP.</p>
*/
inline const Aws::String& GetPrincipalArn() const{ return m_principalArn; }
inline bool PrincipalArnHasBeenSet() const { return m_principalArnHasBeenSet; }
inline void SetPrincipalArn(const Aws::String& value) { m_principalArnHasBeenSet = true; m_principalArn = value; }
inline void SetPrincipalArn(Aws::String&& value) { m_principalArnHasBeenSet = true; m_principalArn = std::move(value); }
inline void SetPrincipalArn(const char* value) { m_principalArnHasBeenSet = true; m_principalArn.assign(value); }
inline AssumeRoleWithSAMLRequest& WithPrincipalArn(const Aws::String& value) { SetPrincipalArn(value); return *this;}
inline AssumeRoleWithSAMLRequest& WithPrincipalArn(Aws::String&& value) { SetPrincipalArn(std::move(value)); return *this;}
inline AssumeRoleWithSAMLRequest& WithPrincipalArn(const char* value) { SetPrincipalArn(value); return *this;}
///@}
///@{
/**
* <p>The base64 encoded SAML authentication response provided by the IdP.</p>
* <p>For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-saml-IdP-tasks.html">Configuring
* a Relying Party and Adding Claims</a> in the <i>IAM User Guide</i>. </p>
*/
inline const Aws::String& GetSAMLAssertion() const{ return m_sAMLAssertion; }
inline bool SAMLAssertionHasBeenSet() const { return m_sAMLAssertionHasBeenSet; }
inline void SetSAMLAssertion(const Aws::String& value) { m_sAMLAssertionHasBeenSet = true; m_sAMLAssertion = value; }
inline void SetSAMLAssertion(Aws::String&& value) { m_sAMLAssertionHasBeenSet = true; m_sAMLAssertion = std::move(value); }
inline void SetSAMLAssertion(const char* value) { m_sAMLAssertionHasBeenSet = true; m_sAMLAssertion.assign(value); }
inline AssumeRoleWithSAMLRequest& WithSAMLAssertion(const Aws::String& value) { SetSAMLAssertion(value); return *this;}
inline AssumeRoleWithSAMLRequest& WithSAMLAssertion(Aws::String&& value) { SetSAMLAssertion(std::move(value)); return *this;}
inline AssumeRoleWithSAMLRequest& WithSAMLAssertion(const char* value) { SetSAMLAssertion(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Names (ARNs) of the IAM managed policies that you want to
* use as managed session policies. The policies must exist in the same account as
* the role.</p> <p>This parameter is optional. You can provide up to 10 managed
* policy ARNs. However, the plaintext that you use for both inline and managed
* session policies can't exceed 2,048 characters. For more information about ARNs,
* see <a
* href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon
* Resource Names (ARNs) and Amazon Web Services Service Namespaces</a> in the
* Amazon Web Services General Reference.</p> <p>An Amazon Web Services
* conversion compresses the passed inline session policy, managed policy ARNs, and
* session tags into a packed binary format that has a separate limit. Your request
* can fail for this limit even if your plaintext meets the other requirements. The
* <code>PackedPolicySize</code> response element indicates by percentage how close
* the policies and tags for your request are to the upper size limit.</p>
* <p>Passing policies to this operation returns new temporary credentials. The
* resulting session's permissions are the intersection of the role's
* identity-based policy and the session policies. You can use the role's temporary
* credentials in subsequent Amazon Web Services API calls to access resources in
* the account that owns the role. You cannot use session policies to grant more
* permissions than those allowed by the identity-based policy of the role that is
* being assumed. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::Vector<PolicyDescriptorType>& GetPolicyArns() const{ return m_policyArns; }
inline bool PolicyArnsHasBeenSet() const { return m_policyArnsHasBeenSet; }
inline void SetPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { m_policyArnsHasBeenSet = true; m_policyArns = value; }
inline void SetPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { m_policyArnsHasBeenSet = true; m_policyArns = std::move(value); }
inline AssumeRoleWithSAMLRequest& WithPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { SetPolicyArns(value); return *this;}
inline AssumeRoleWithSAMLRequest& WithPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { SetPolicyArns(std::move(value)); return *this;}
inline AssumeRoleWithSAMLRequest& AddPolicyArns(const PolicyDescriptorType& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(value); return *this; }
inline AssumeRoleWithSAMLRequest& AddPolicyArns(PolicyDescriptorType&& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(std::move(value)); return *this; }
///@}
///@{
/**
* <p>An IAM policy in JSON format that you want to use as an inline session
* policy.</p> <p>This parameter is optional. Passing policies to this operation
* returns new temporary credentials. The resulting session's permissions are the
* intersection of the role's identity-based policy and the session policies. You
* can use the role's temporary credentials in subsequent Amazon Web Services API
* calls to access resources in the account that owns the role. You cannot use
* session policies to grant more permissions than those allowed by the
* identity-based policy of the role that is being assumed. For more information,
* see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>. </p> <p>The plaintext that you use
* for both inline and managed session policies can't exceed 2,048 characters. The
* JSON policy characters can be any ASCII character from the space character to
* the end of the valid character list (\u0020 through \u00FF). It can also include
* the tab (\u0009), linefeed (\u000A), and carriage return (\u000D)
* characters.</p> <p>An Amazon Web Services conversion compresses the
* passed inline session policy, managed policy ARNs, and session tags into a
* packed binary format that has a separate limit. Your request can fail for this
* limit even if your plaintext meets the other requirements. The
* <code>PackedPolicySize</code> response element indicates by percentage how close
* the policies and tags for your request are to the upper size limit.</p>
*/
inline const Aws::String& GetPolicy() const{ return m_policy; }
inline bool PolicyHasBeenSet() const { return m_policyHasBeenSet; }
inline void SetPolicy(const Aws::String& value) { m_policyHasBeenSet = true; m_policy = value; }
inline void SetPolicy(Aws::String&& value) { m_policyHasBeenSet = true; m_policy = std::move(value); }
inline void SetPolicy(const char* value) { m_policyHasBeenSet = true; m_policy.assign(value); }
inline AssumeRoleWithSAMLRequest& WithPolicy(const Aws::String& value) { SetPolicy(value); return *this;}
inline AssumeRoleWithSAMLRequest& WithPolicy(Aws::String&& value) { SetPolicy(std::move(value)); return *this;}
inline AssumeRoleWithSAMLRequest& WithPolicy(const char* value) { SetPolicy(value); return *this;}
///@}
///@{
/**
* <p>The duration, in seconds, of the role session. Your role session lasts for
* the duration that you specify for the <code>DurationSeconds</code> parameter, or
* until the time specified in the SAML authentication response's
* <code>SessionNotOnOrAfter</code> value, whichever is shorter. You can provide a
* <code>DurationSeconds</code> value from 900 seconds (15 minutes) up to the
* maximum session duration setting for the role. This setting can have a value
* from 1 hour to 12 hours. If you specify a value higher than this setting, the
* operation fails. For example, if you specify a session duration of 12 hours, but
* your administrator set the maximum session duration to 6 hours, your operation
* fails. To learn how to view the maximum value for your role, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session">View
* the Maximum Session Duration Setting for a Role</a> in the <i>IAM User
* Guide</i>.</p> <p>By default, the value is set to <code>3600</code> seconds.
* </p> <p>The <code>DurationSeconds</code> parameter is separate from the
* duration of a console session that you might request using the returned
* credentials. The request to the federation endpoint for a console sign-in token
* takes a <code>SessionDuration</code> parameter that specifies the maximum length
* of the console session. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html">Creating
* a URL that Enables Federated Users to Access the Amazon Web Services Management
* Console</a> in the <i>IAM User Guide</i>.</p>
*/
inline int GetDurationSeconds() const{ return m_durationSeconds; }
inline bool DurationSecondsHasBeenSet() const { return m_durationSecondsHasBeenSet; }
inline void SetDurationSeconds(int value) { m_durationSecondsHasBeenSet = true; m_durationSeconds = value; }
inline AssumeRoleWithSAMLRequest& WithDurationSeconds(int value) { SetDurationSeconds(value); return *this;}
///@}
private:
Aws::String m_roleArn;
bool m_roleArnHasBeenSet = false;
Aws::String m_principalArn;
bool m_principalArnHasBeenSet = false;
Aws::String m_sAMLAssertion;
bool m_sAMLAssertionHasBeenSet = false;
Aws::Vector<PolicyDescriptorType> m_policyArns;
bool m_policyArnsHasBeenSet = false;
Aws::String m_policy;
bool m_policyHasBeenSet = false;
int m_durationSeconds;
bool m_durationSecondsHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,228 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/model/Credentials.h>
#include <aws/sts/model/AssumedRoleUser.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains the response to a successful <a>AssumeRoleWithSAML</a> request,
* including temporary Amazon Web Services credentials that can be used to make
* Amazon Web Services requests. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithSAMLResponse">AWS
* API Reference</a></p>
*/
class AssumeRoleWithSAMLResult
{
public:
AWS_STS_API AssumeRoleWithSAMLResult();
AWS_STS_API AssumeRoleWithSAMLResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API AssumeRoleWithSAMLResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The temporary security credentials, which include an access key ID, a secret
* access key, and a security (or session) token.</p> <p>The size of the
* security token that STS API operations return is not fixed. We strongly
* recommend that you make no assumptions about the maximum size.</p>
*/
inline const Credentials& GetCredentials() const{ return m_credentials; }
inline void SetCredentials(const Credentials& value) { m_credentials = value; }
inline void SetCredentials(Credentials&& value) { m_credentials = std::move(value); }
inline AssumeRoleWithSAMLResult& WithCredentials(const Credentials& value) { SetCredentials(value); return *this;}
inline AssumeRoleWithSAMLResult& WithCredentials(Credentials&& value) { SetCredentials(std::move(value)); return *this;}
///@}
///@{
/**
* <p>The identifiers for the temporary security credentials that the operation
* returns.</p>
*/
inline const AssumedRoleUser& GetAssumedRoleUser() const{ return m_assumedRoleUser; }
inline void SetAssumedRoleUser(const AssumedRoleUser& value) { m_assumedRoleUser = value; }
inline void SetAssumedRoleUser(AssumedRoleUser&& value) { m_assumedRoleUser = std::move(value); }
inline AssumeRoleWithSAMLResult& WithAssumedRoleUser(const AssumedRoleUser& value) { SetAssumedRoleUser(value); return *this;}
inline AssumeRoleWithSAMLResult& WithAssumedRoleUser(AssumedRoleUser&& value) { SetAssumedRoleUser(std::move(value)); return *this;}
///@}
///@{
/**
* <p>A percentage value that indicates the packed size of the session policies and
* session tags combined passed in the request. The request fails if the packed
* size is greater than 100 percent, which means the policies and tags exceeded the
* allowed space.</p>
*/
inline int GetPackedPolicySize() const{ return m_packedPolicySize; }
inline void SetPackedPolicySize(int value) { m_packedPolicySize = value; }
inline AssumeRoleWithSAMLResult& WithPackedPolicySize(int value) { SetPackedPolicySize(value); return *this;}
///@}
///@{
/**
* <p>The value of the <code>NameID</code> element in the <code>Subject</code>
* element of the SAML assertion.</p>
*/
inline const Aws::String& GetSubject() const{ return m_subject; }
inline void SetSubject(const Aws::String& value) { m_subject = value; }
inline void SetSubject(Aws::String&& value) { m_subject = std::move(value); }
inline void SetSubject(const char* value) { m_subject.assign(value); }
inline AssumeRoleWithSAMLResult& WithSubject(const Aws::String& value) { SetSubject(value); return *this;}
inline AssumeRoleWithSAMLResult& WithSubject(Aws::String&& value) { SetSubject(std::move(value)); return *this;}
inline AssumeRoleWithSAMLResult& WithSubject(const char* value) { SetSubject(value); return *this;}
///@}
///@{
/**
* <p> The format of the name ID, as defined by the <code>Format</code> attribute
* in the <code>NameID</code> element of the SAML assertion. Typical examples of
* the format are <code>transient</code> or <code>persistent</code>. </p> <p> If
* the format includes the prefix
* <code>urn:oasis:names:tc:SAML:2.0:nameid-format</code>, that prefix is removed.
* For example, <code>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</code> is
* returned as <code>transient</code>. If the format includes any other prefix, the
* format is returned with no modifications.</p>
*/
inline const Aws::String& GetSubjectType() const{ return m_subjectType; }
inline void SetSubjectType(const Aws::String& value) { m_subjectType = value; }
inline void SetSubjectType(Aws::String&& value) { m_subjectType = std::move(value); }
inline void SetSubjectType(const char* value) { m_subjectType.assign(value); }
inline AssumeRoleWithSAMLResult& WithSubjectType(const Aws::String& value) { SetSubjectType(value); return *this;}
inline AssumeRoleWithSAMLResult& WithSubjectType(Aws::String&& value) { SetSubjectType(std::move(value)); return *this;}
inline AssumeRoleWithSAMLResult& WithSubjectType(const char* value) { SetSubjectType(value); return *this;}
///@}
///@{
/**
* <p>The value of the <code>Issuer</code> element of the SAML assertion.</p>
*/
inline const Aws::String& GetIssuer() const{ return m_issuer; }
inline void SetIssuer(const Aws::String& value) { m_issuer = value; }
inline void SetIssuer(Aws::String&& value) { m_issuer = std::move(value); }
inline void SetIssuer(const char* value) { m_issuer.assign(value); }
inline AssumeRoleWithSAMLResult& WithIssuer(const Aws::String& value) { SetIssuer(value); return *this;}
inline AssumeRoleWithSAMLResult& WithIssuer(Aws::String&& value) { SetIssuer(std::move(value)); return *this;}
inline AssumeRoleWithSAMLResult& WithIssuer(const char* value) { SetIssuer(value); return *this;}
///@}
///@{
/**
* <p> The value of the <code>Recipient</code> attribute of the
* <code>SubjectConfirmationData</code> element of the SAML assertion. </p>
*/
inline const Aws::String& GetAudience() const{ return m_audience; }
inline void SetAudience(const Aws::String& value) { m_audience = value; }
inline void SetAudience(Aws::String&& value) { m_audience = std::move(value); }
inline void SetAudience(const char* value) { m_audience.assign(value); }
inline AssumeRoleWithSAMLResult& WithAudience(const Aws::String& value) { SetAudience(value); return *this;}
inline AssumeRoleWithSAMLResult& WithAudience(Aws::String&& value) { SetAudience(std::move(value)); return *this;}
inline AssumeRoleWithSAMLResult& WithAudience(const char* value) { SetAudience(value); return *this;}
///@}
///@{
/**
* <p>A hash value based on the concatenation of the following:</p> <ul> <li>
* <p>The <code>Issuer</code> response value.</p> </li> <li> <p>The Amazon Web
* Services account ID.</p> </li> <li> <p>The friendly name (the last part of the
* ARN) of the SAML provider in IAM.</p> </li> </ul> <p>The combination of
* <code>NameQualifier</code> and <code>Subject</code> can be used to uniquely
* identify a user.</p> <p>The following pseudocode shows how the hash value is
* calculated:</p> <p> <code>BASE64 ( SHA1 ( "https://example.com/saml" +
* "123456789012" + "/MySAMLIdP" ) )</code> </p>
*/
inline const Aws::String& GetNameQualifier() const{ return m_nameQualifier; }
inline void SetNameQualifier(const Aws::String& value) { m_nameQualifier = value; }
inline void SetNameQualifier(Aws::String&& value) { m_nameQualifier = std::move(value); }
inline void SetNameQualifier(const char* value) { m_nameQualifier.assign(value); }
inline AssumeRoleWithSAMLResult& WithNameQualifier(const Aws::String& value) { SetNameQualifier(value); return *this;}
inline AssumeRoleWithSAMLResult& WithNameQualifier(Aws::String&& value) { SetNameQualifier(std::move(value)); return *this;}
inline AssumeRoleWithSAMLResult& WithNameQualifier(const char* value) { SetNameQualifier(value); return *this;}
///@}
///@{
/**
* <p>The value in the <code>SourceIdentity</code> attribute in the SAML assertion.
* </p> <p>You can require users to set a source identity value when they assume a
* role. You do this by using the <code>sts:SourceIdentity</code> condition key in
* a role trust policy. That way, actions that are taken with the role are
* associated with that user. After the source identity is set, the value cannot be
* changed. It is present in the request for all actions that are taken by the role
* and persists across <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining">chained
* role</a> sessions. You can configure your SAML identity provider to use an
* attribute associated with your users, like user name or email, as the source
* identity when calling <code>AssumeRoleWithSAML</code>. You do this by adding an
* attribute to the SAML assertion. For more information about using source
* identity, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html">Monitor
* and control actions taken with assumed roles</a> in the <i>IAM User
* Guide</i>.</p> <p>The regex used to validate this parameter is a string of
* characters consisting of upper- and lower-case alphanumeric characters with no
* spaces. You can also include underscores or any of the following characters:
* =,.@-</p>
*/
inline const Aws::String& GetSourceIdentity() const{ return m_sourceIdentity; }
inline void SetSourceIdentity(const Aws::String& value) { m_sourceIdentity = value; }
inline void SetSourceIdentity(Aws::String&& value) { m_sourceIdentity = std::move(value); }
inline void SetSourceIdentity(const char* value) { m_sourceIdentity.assign(value); }
inline AssumeRoleWithSAMLResult& WithSourceIdentity(const Aws::String& value) { SetSourceIdentity(value); return *this;}
inline AssumeRoleWithSAMLResult& WithSourceIdentity(Aws::String&& value) { SetSourceIdentity(std::move(value)); return *this;}
inline AssumeRoleWithSAMLResult& WithSourceIdentity(const char* value) { SetSourceIdentity(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline AssumeRoleWithSAMLResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline AssumeRoleWithSAMLResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Credentials m_credentials;
AssumedRoleUser m_assumedRoleUser;
int m_packedPolicySize;
Aws::String m_subject;
Aws::String m_subjectType;
Aws::String m_issuer;
Aws::String m_audience;
Aws::String m_nameQualifier;
Aws::String m_sourceIdentity;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,235 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/sts/model/PolicyDescriptorType.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class AssumeRoleWithWebIdentityRequest : public STSRequest
{
public:
AWS_STS_API AssumeRoleWithWebIdentityRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "AssumeRoleWithWebIdentity"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The Amazon Resource Name (ARN) of the role that the caller is assuming.</p>
*/
inline const Aws::String& GetRoleArn() const{ return m_roleArn; }
inline bool RoleArnHasBeenSet() const { return m_roleArnHasBeenSet; }
inline void SetRoleArn(const Aws::String& value) { m_roleArnHasBeenSet = true; m_roleArn = value; }
inline void SetRoleArn(Aws::String&& value) { m_roleArnHasBeenSet = true; m_roleArn = std::move(value); }
inline void SetRoleArn(const char* value) { m_roleArnHasBeenSet = true; m_roleArn.assign(value); }
inline AssumeRoleWithWebIdentityRequest& WithRoleArn(const Aws::String& value) { SetRoleArn(value); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithRoleArn(Aws::String&& value) { SetRoleArn(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithRoleArn(const char* value) { SetRoleArn(value); return *this;}
///@}
///@{
/**
* <p>An identifier for the assumed role session. Typically, you pass the name or
* identifier that is associated with the user who is using your application. That
* way, the temporary security credentials that your application will use are
* associated with that user. This session name is included as part of the ARN and
* assumed role ID in the <code>AssumedRoleUser</code> response element.</p> <p>The
* regex used to validate this parameter is a string of characters consisting of
* upper- and lower-case alphanumeric characters with no spaces. You can also
* include underscores or any of the following characters: =,.@-</p>
*/
inline const Aws::String& GetRoleSessionName() const{ return m_roleSessionName; }
inline bool RoleSessionNameHasBeenSet() const { return m_roleSessionNameHasBeenSet; }
inline void SetRoleSessionName(const Aws::String& value) { m_roleSessionNameHasBeenSet = true; m_roleSessionName = value; }
inline void SetRoleSessionName(Aws::String&& value) { m_roleSessionNameHasBeenSet = true; m_roleSessionName = std::move(value); }
inline void SetRoleSessionName(const char* value) { m_roleSessionNameHasBeenSet = true; m_roleSessionName.assign(value); }
inline AssumeRoleWithWebIdentityRequest& WithRoleSessionName(const Aws::String& value) { SetRoleSessionName(value); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithRoleSessionName(Aws::String&& value) { SetRoleSessionName(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithRoleSessionName(const char* value) { SetRoleSessionName(value); return *this;}
///@}
///@{
/**
* <p>The OAuth 2.0 access token or OpenID Connect ID token that is provided by the
* identity provider. Your application must get this token by authenticating the
* user who is using your application with a web identity provider before the
* application makes an <code>AssumeRoleWithWebIdentity</code> call. Only tokens
* with RSA algorithms (RS256) are supported.</p>
*/
inline const Aws::String& GetWebIdentityToken() const{ return m_webIdentityToken; }
inline bool WebIdentityTokenHasBeenSet() const { return m_webIdentityTokenHasBeenSet; }
inline void SetWebIdentityToken(const Aws::String& value) { m_webIdentityTokenHasBeenSet = true; m_webIdentityToken = value; }
inline void SetWebIdentityToken(Aws::String&& value) { m_webIdentityTokenHasBeenSet = true; m_webIdentityToken = std::move(value); }
inline void SetWebIdentityToken(const char* value) { m_webIdentityTokenHasBeenSet = true; m_webIdentityToken.assign(value); }
inline AssumeRoleWithWebIdentityRequest& WithWebIdentityToken(const Aws::String& value) { SetWebIdentityToken(value); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithWebIdentityToken(Aws::String&& value) { SetWebIdentityToken(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithWebIdentityToken(const char* value) { SetWebIdentityToken(value); return *this;}
///@}
///@{
/**
* <p>The fully qualified host component of the domain name of the OAuth 2.0
* identity provider. Do not specify this value for an OpenID Connect identity
* provider.</p> <p>Currently <code>www.amazon.com</code> and
* <code>graph.facebook.com</code> are the only supported identity providers for
* OAuth 2.0 access tokens. Do not include URL schemes and port numbers.</p> <p>Do
* not specify this value for OpenID Connect ID tokens.</p>
*/
inline const Aws::String& GetProviderId() const{ return m_providerId; }
inline bool ProviderIdHasBeenSet() const { return m_providerIdHasBeenSet; }
inline void SetProviderId(const Aws::String& value) { m_providerIdHasBeenSet = true; m_providerId = value; }
inline void SetProviderId(Aws::String&& value) { m_providerIdHasBeenSet = true; m_providerId = std::move(value); }
inline void SetProviderId(const char* value) { m_providerIdHasBeenSet = true; m_providerId.assign(value); }
inline AssumeRoleWithWebIdentityRequest& WithProviderId(const Aws::String& value) { SetProviderId(value); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithProviderId(Aws::String&& value) { SetProviderId(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithProviderId(const char* value) { SetProviderId(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Names (ARNs) of the IAM managed policies that you want to
* use as managed session policies. The policies must exist in the same account as
* the role.</p> <p>This parameter is optional. You can provide up to 10 managed
* policy ARNs. However, the plaintext that you use for both inline and managed
* session policies can't exceed 2,048 characters. For more information about ARNs,
* see <a
* href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon
* Resource Names (ARNs) and Amazon Web Services Service Namespaces</a> in the
* Amazon Web Services General Reference.</p> <p>An Amazon Web Services
* conversion compresses the passed inline session policy, managed policy ARNs, and
* session tags into a packed binary format that has a separate limit. Your request
* can fail for this limit even if your plaintext meets the other requirements. The
* <code>PackedPolicySize</code> response element indicates by percentage how close
* the policies and tags for your request are to the upper size limit.</p>
* <p>Passing policies to this operation returns new temporary credentials. The
* resulting session's permissions are the intersection of the role's
* identity-based policy and the session policies. You can use the role's temporary
* credentials in subsequent Amazon Web Services API calls to access resources in
* the account that owns the role. You cannot use session policies to grant more
* permissions than those allowed by the identity-based policy of the role that is
* being assumed. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::Vector<PolicyDescriptorType>& GetPolicyArns() const{ return m_policyArns; }
inline bool PolicyArnsHasBeenSet() const { return m_policyArnsHasBeenSet; }
inline void SetPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { m_policyArnsHasBeenSet = true; m_policyArns = value; }
inline void SetPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { m_policyArnsHasBeenSet = true; m_policyArns = std::move(value); }
inline AssumeRoleWithWebIdentityRequest& WithPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { SetPolicyArns(value); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { SetPolicyArns(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityRequest& AddPolicyArns(const PolicyDescriptorType& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(value); return *this; }
inline AssumeRoleWithWebIdentityRequest& AddPolicyArns(PolicyDescriptorType&& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(std::move(value)); return *this; }
///@}
///@{
/**
* <p>An IAM policy in JSON format that you want to use as an inline session
* policy.</p> <p>This parameter is optional. Passing policies to this operation
* returns new temporary credentials. The resulting session's permissions are the
* intersection of the role's identity-based policy and the session policies. You
* can use the role's temporary credentials in subsequent Amazon Web Services API
* calls to access resources in the account that owns the role. You cannot use
* session policies to grant more permissions than those allowed by the
* identity-based policy of the role that is being assumed. For more information,
* see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p> <p>The plaintext that you use for
* both inline and managed session policies can't exceed 2,048 characters. The JSON
* policy characters can be any ASCII character from the space character to the end
* of the valid character list (\u0020 through \u00FF). It can also include the tab
* (\u0009), linefeed (\u000A), and carriage return (\u000D) characters.</p>
* <p>An Amazon Web Services conversion compresses the passed inline session
* policy, managed policy ARNs, and session tags into a packed binary format that
* has a separate limit. Your request can fail for this limit even if your
* plaintext meets the other requirements. The <code>PackedPolicySize</code>
* response element indicates by percentage how close the policies and tags for
* your request are to the upper size limit.</p>
*/
inline const Aws::String& GetPolicy() const{ return m_policy; }
inline bool PolicyHasBeenSet() const { return m_policyHasBeenSet; }
inline void SetPolicy(const Aws::String& value) { m_policyHasBeenSet = true; m_policy = value; }
inline void SetPolicy(Aws::String&& value) { m_policyHasBeenSet = true; m_policy = std::move(value); }
inline void SetPolicy(const char* value) { m_policyHasBeenSet = true; m_policy.assign(value); }
inline AssumeRoleWithWebIdentityRequest& WithPolicy(const Aws::String& value) { SetPolicy(value); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithPolicy(Aws::String&& value) { SetPolicy(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityRequest& WithPolicy(const char* value) { SetPolicy(value); return *this;}
///@}
///@{
/**
* <p>The duration, in seconds, of the role session. The value can range from 900
* seconds (15 minutes) up to the maximum session duration setting for the role.
* This setting can have a value from 1 hour to 12 hours. If you specify a value
* higher than this setting, the operation fails. For example, if you specify a
* session duration of 12 hours, but your administrator set the maximum session
* duration to 6 hours, your operation fails. To learn how to view the maximum
* value for your role, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session">View
* the Maximum Session Duration Setting for a Role</a> in the <i>IAM User
* Guide</i>.</p> <p>By default, the value is set to <code>3600</code> seconds.
* </p> <p>The <code>DurationSeconds</code> parameter is separate from the
* duration of a console session that you might request using the returned
* credentials. The request to the federation endpoint for a console sign-in token
* takes a <code>SessionDuration</code> parameter that specifies the maximum length
* of the console session. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html">Creating
* a URL that Enables Federated Users to Access the Amazon Web Services Management
* Console</a> in the <i>IAM User Guide</i>.</p>
*/
inline int GetDurationSeconds() const{ return m_durationSeconds; }
inline bool DurationSecondsHasBeenSet() const { return m_durationSecondsHasBeenSet; }
inline void SetDurationSeconds(int value) { m_durationSecondsHasBeenSet = true; m_durationSeconds = value; }
inline AssumeRoleWithWebIdentityRequest& WithDurationSeconds(int value) { SetDurationSeconds(value); return *this;}
///@}
private:
Aws::String m_roleArn;
bool m_roleArnHasBeenSet = false;
Aws::String m_roleSessionName;
bool m_roleSessionNameHasBeenSet = false;
Aws::String m_webIdentityToken;
bool m_webIdentityTokenHasBeenSet = false;
Aws::String m_providerId;
bool m_providerIdHasBeenSet = false;
Aws::Vector<PolicyDescriptorType> m_policyArns;
bool m_policyArnsHasBeenSet = false;
Aws::String m_policy;
bool m_policyHasBeenSet = false;
int m_durationSeconds;
bool m_durationSecondsHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,200 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/model/Credentials.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/sts/model/AssumedRoleUser.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains the response to a successful <a>AssumeRoleWithWebIdentity</a>
* request, including temporary Amazon Web Services credentials that can be used to
* make Amazon Web Services requests. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleWithWebIdentityResponse">AWS
* API Reference</a></p>
*/
class AssumeRoleWithWebIdentityResult
{
public:
AWS_STS_API AssumeRoleWithWebIdentityResult();
AWS_STS_API AssumeRoleWithWebIdentityResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API AssumeRoleWithWebIdentityResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The temporary security credentials, which include an access key ID, a secret
* access key, and a security token.</p> <p>The size of the security token
* that STS API operations return is not fixed. We strongly recommend that you make
* no assumptions about the maximum size.</p>
*/
inline const Credentials& GetCredentials() const{ return m_credentials; }
inline void SetCredentials(const Credentials& value) { m_credentials = value; }
inline void SetCredentials(Credentials&& value) { m_credentials = std::move(value); }
inline AssumeRoleWithWebIdentityResult& WithCredentials(const Credentials& value) { SetCredentials(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithCredentials(Credentials&& value) { SetCredentials(std::move(value)); return *this;}
///@}
///@{
/**
* <p>The unique user identifier that is returned by the identity provider. This
* identifier is associated with the <code>WebIdentityToken</code> that was
* submitted with the <code>AssumeRoleWithWebIdentity</code> call. The identifier
* is typically unique to the user and the application that acquired the
* <code>WebIdentityToken</code> (pairwise identifier). For OpenID Connect ID
* tokens, this field contains the value returned by the identity provider as the
* token's <code>sub</code> (Subject) claim. </p>
*/
inline const Aws::String& GetSubjectFromWebIdentityToken() const{ return m_subjectFromWebIdentityToken; }
inline void SetSubjectFromWebIdentityToken(const Aws::String& value) { m_subjectFromWebIdentityToken = value; }
inline void SetSubjectFromWebIdentityToken(Aws::String&& value) { m_subjectFromWebIdentityToken = std::move(value); }
inline void SetSubjectFromWebIdentityToken(const char* value) { m_subjectFromWebIdentityToken.assign(value); }
inline AssumeRoleWithWebIdentityResult& WithSubjectFromWebIdentityToken(const Aws::String& value) { SetSubjectFromWebIdentityToken(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithSubjectFromWebIdentityToken(Aws::String&& value) { SetSubjectFromWebIdentityToken(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityResult& WithSubjectFromWebIdentityToken(const char* value) { SetSubjectFromWebIdentityToken(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers
* that you can use to refer to the resulting temporary security credentials. For
* example, you can reference these credentials as a principal in a resource-based
* policy by using the ARN or assumed role ID. The ARN and ID include the
* <code>RoleSessionName</code> that you specified when you called
* <code>AssumeRole</code>. </p>
*/
inline const AssumedRoleUser& GetAssumedRoleUser() const{ return m_assumedRoleUser; }
inline void SetAssumedRoleUser(const AssumedRoleUser& value) { m_assumedRoleUser = value; }
inline void SetAssumedRoleUser(AssumedRoleUser&& value) { m_assumedRoleUser = std::move(value); }
inline AssumeRoleWithWebIdentityResult& WithAssumedRoleUser(const AssumedRoleUser& value) { SetAssumedRoleUser(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithAssumedRoleUser(AssumedRoleUser&& value) { SetAssumedRoleUser(std::move(value)); return *this;}
///@}
///@{
/**
* <p>A percentage value that indicates the packed size of the session policies and
* session tags combined passed in the request. The request fails if the packed
* size is greater than 100 percent, which means the policies and tags exceeded the
* allowed space.</p>
*/
inline int GetPackedPolicySize() const{ return m_packedPolicySize; }
inline void SetPackedPolicySize(int value) { m_packedPolicySize = value; }
inline AssumeRoleWithWebIdentityResult& WithPackedPolicySize(int value) { SetPackedPolicySize(value); return *this;}
///@}
///@{
/**
* <p> The issuing authority of the web identity token presented. For OpenID
* Connect ID tokens, this contains the value of the <code>iss</code> field. For
* OAuth 2.0 access tokens, this contains the value of the <code>ProviderId</code>
* parameter that was passed in the <code>AssumeRoleWithWebIdentity</code>
* request.</p>
*/
inline const Aws::String& GetProvider() const{ return m_provider; }
inline void SetProvider(const Aws::String& value) { m_provider = value; }
inline void SetProvider(Aws::String&& value) { m_provider = std::move(value); }
inline void SetProvider(const char* value) { m_provider.assign(value); }
inline AssumeRoleWithWebIdentityResult& WithProvider(const Aws::String& value) { SetProvider(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithProvider(Aws::String&& value) { SetProvider(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityResult& WithProvider(const char* value) { SetProvider(value); return *this;}
///@}
///@{
/**
* <p>The intended audience (also known as client ID) of the web identity token.
* This is traditionally the client identifier issued to the application that
* requested the web identity token.</p>
*/
inline const Aws::String& GetAudience() const{ return m_audience; }
inline void SetAudience(const Aws::String& value) { m_audience = value; }
inline void SetAudience(Aws::String&& value) { m_audience = std::move(value); }
inline void SetAudience(const char* value) { m_audience.assign(value); }
inline AssumeRoleWithWebIdentityResult& WithAudience(const Aws::String& value) { SetAudience(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithAudience(Aws::String&& value) { SetAudience(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityResult& WithAudience(const char* value) { SetAudience(value); return *this;}
///@}
///@{
/**
* <p>The value of the source identity that is returned in the JSON web token (JWT)
* from the identity provider.</p> <p>You can require users to set a source
* identity value when they assume a role. You do this by using the
* <code>sts:SourceIdentity</code> condition key in a role trust policy. That way,
* actions that are taken with the role are associated with that user. After the
* source identity is set, the value cannot be changed. It is present in the
* request for all actions that are taken by the role and persists across <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts#iam-term-role-chaining">chained
* role</a> sessions. You can configure your identity provider to use an attribute
* associated with your users, like user name or email, as the source identity when
* calling <code>AssumeRoleWithWebIdentity</code>. You do this by adding a claim to
* the JSON web token. To learn more about OIDC tokens and claims, see <a
* href="https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html">Using
* Tokens with User Pools</a> in the <i>Amazon Cognito Developer Guide</i>. For
* more information about using source identity, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html">Monitor
* and control actions taken with assumed roles</a> in the <i>IAM User
* Guide</i>.</p> <p>The regex used to validate this parameter is a string of
* characters consisting of upper- and lower-case alphanumeric characters with no
* spaces. You can also include underscores or any of the following characters:
* =,.@-</p>
*/
inline const Aws::String& GetSourceIdentity() const{ return m_sourceIdentity; }
inline void SetSourceIdentity(const Aws::String& value) { m_sourceIdentity = value; }
inline void SetSourceIdentity(Aws::String&& value) { m_sourceIdentity = std::move(value); }
inline void SetSourceIdentity(const char* value) { m_sourceIdentity.assign(value); }
inline AssumeRoleWithWebIdentityResult& WithSourceIdentity(const Aws::String& value) { SetSourceIdentity(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithSourceIdentity(Aws::String&& value) { SetSourceIdentity(std::move(value)); return *this;}
inline AssumeRoleWithWebIdentityResult& WithSourceIdentity(const char* value) { SetSourceIdentity(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline AssumeRoleWithWebIdentityResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline AssumeRoleWithWebIdentityResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Credentials m_credentials;
Aws::String m_subjectFromWebIdentityToken;
AssumedRoleUser m_assumedRoleUser;
int m_packedPolicySize;
Aws::String m_provider;
Aws::String m_audience;
Aws::String m_sourceIdentity;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,87 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>The identifiers for the temporary security credentials that the operation
* returns.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumedRoleUser">AWS
* API Reference</a></p>
*/
class AssumedRoleUser
{
public:
AWS_STS_API AssumedRoleUser();
AWS_STS_API AssumedRoleUser(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API AssumedRoleUser& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
/**
* <p>A unique identifier that contains the role ID and the role session name of
* the role that is being assumed. The role ID is generated by Amazon Web Services
* when the role is created.</p>
*/
inline const Aws::String& GetAssumedRoleId() const{ return m_assumedRoleId; }
inline bool AssumedRoleIdHasBeenSet() const { return m_assumedRoleIdHasBeenSet; }
inline void SetAssumedRoleId(const Aws::String& value) { m_assumedRoleIdHasBeenSet = true; m_assumedRoleId = value; }
inline void SetAssumedRoleId(Aws::String&& value) { m_assumedRoleIdHasBeenSet = true; m_assumedRoleId = std::move(value); }
inline void SetAssumedRoleId(const char* value) { m_assumedRoleIdHasBeenSet = true; m_assumedRoleId.assign(value); }
inline AssumedRoleUser& WithAssumedRoleId(const Aws::String& value) { SetAssumedRoleId(value); return *this;}
inline AssumedRoleUser& WithAssumedRoleId(Aws::String&& value) { SetAssumedRoleId(std::move(value)); return *this;}
inline AssumedRoleUser& WithAssumedRoleId(const char* value) { SetAssumedRoleId(value); return *this;}
///@}
///@{
/**
* <p>The ARN of the temporary security credentials that are returned from the
* <a>AssumeRole</a> action. For more information about ARNs and how to use them in
* policies, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html">IAM
* Identifiers</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::String& GetArn() const{ return m_arn; }
inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; }
inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; }
inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); }
inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); }
inline AssumedRoleUser& WithArn(const Aws::String& value) { SetArn(value); return *this;}
inline AssumedRoleUser& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;}
inline AssumedRoleUser& WithArn(const char* value) { SetArn(value); return *this;}
///@}
private:
Aws::String m_assumedRoleId;
bool m_assumedRoleIdHasBeenSet = false;
Aws::String m_arn;
bool m_arnHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,115 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/DateTime.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Amazon Web Services credentials for API authentication.</p><p><h3>See
* Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/Credentials">AWS API
* Reference</a></p>
*/
class Credentials
{
public:
AWS_STS_API Credentials();
AWS_STS_API Credentials(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API Credentials& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
/**
* <p>The access key ID that identifies the temporary security credentials.</p>
*/
inline const Aws::String& GetAccessKeyId() const{ return m_accessKeyId; }
inline bool AccessKeyIdHasBeenSet() const { return m_accessKeyIdHasBeenSet; }
inline void SetAccessKeyId(const Aws::String& value) { m_accessKeyIdHasBeenSet = true; m_accessKeyId = value; }
inline void SetAccessKeyId(Aws::String&& value) { m_accessKeyIdHasBeenSet = true; m_accessKeyId = std::move(value); }
inline void SetAccessKeyId(const char* value) { m_accessKeyIdHasBeenSet = true; m_accessKeyId.assign(value); }
inline Credentials& WithAccessKeyId(const Aws::String& value) { SetAccessKeyId(value); return *this;}
inline Credentials& WithAccessKeyId(Aws::String&& value) { SetAccessKeyId(std::move(value)); return *this;}
inline Credentials& WithAccessKeyId(const char* value) { SetAccessKeyId(value); return *this;}
///@}
///@{
/**
* <p>The secret access key that can be used to sign requests.</p>
*/
inline const Aws::String& GetSecretAccessKey() const{ return m_secretAccessKey; }
inline bool SecretAccessKeyHasBeenSet() const { return m_secretAccessKeyHasBeenSet; }
inline void SetSecretAccessKey(const Aws::String& value) { m_secretAccessKeyHasBeenSet = true; m_secretAccessKey = value; }
inline void SetSecretAccessKey(Aws::String&& value) { m_secretAccessKeyHasBeenSet = true; m_secretAccessKey = std::move(value); }
inline void SetSecretAccessKey(const char* value) { m_secretAccessKeyHasBeenSet = true; m_secretAccessKey.assign(value); }
inline Credentials& WithSecretAccessKey(const Aws::String& value) { SetSecretAccessKey(value); return *this;}
inline Credentials& WithSecretAccessKey(Aws::String&& value) { SetSecretAccessKey(std::move(value)); return *this;}
inline Credentials& WithSecretAccessKey(const char* value) { SetSecretAccessKey(value); return *this;}
///@}
///@{
/**
* <p>The token that users must pass to the service API to use the temporary
* credentials.</p>
*/
inline const Aws::String& GetSessionToken() const{ return m_sessionToken; }
inline bool SessionTokenHasBeenSet() const { return m_sessionTokenHasBeenSet; }
inline void SetSessionToken(const Aws::String& value) { m_sessionTokenHasBeenSet = true; m_sessionToken = value; }
inline void SetSessionToken(Aws::String&& value) { m_sessionTokenHasBeenSet = true; m_sessionToken = std::move(value); }
inline void SetSessionToken(const char* value) { m_sessionTokenHasBeenSet = true; m_sessionToken.assign(value); }
inline Credentials& WithSessionToken(const Aws::String& value) { SetSessionToken(value); return *this;}
inline Credentials& WithSessionToken(Aws::String&& value) { SetSessionToken(std::move(value)); return *this;}
inline Credentials& WithSessionToken(const char* value) { SetSessionToken(value); return *this;}
///@}
///@{
/**
* <p>The date on which the current credentials expire.</p>
*/
inline const Aws::Utils::DateTime& GetExpiration() const{ return m_expiration; }
inline bool ExpirationHasBeenSet() const { return m_expirationHasBeenSet; }
inline void SetExpiration(const Aws::Utils::DateTime& value) { m_expirationHasBeenSet = true; m_expiration = value; }
inline void SetExpiration(Aws::Utils::DateTime&& value) { m_expirationHasBeenSet = true; m_expiration = std::move(value); }
inline Credentials& WithExpiration(const Aws::Utils::DateTime& value) { SetExpiration(value); return *this;}
inline Credentials& WithExpiration(Aws::Utils::DateTime&& value) { SetExpiration(std::move(value)); return *this;}
///@}
private:
Aws::String m_accessKeyId;
bool m_accessKeyIdHasBeenSet = false;
Aws::String m_secretAccessKey;
bool m_secretAccessKeyHasBeenSet = false;
Aws::String m_sessionToken;
bool m_sessionTokenHasBeenSet = false;
Aws::Utils::DateTime m_expiration;
bool m_expirationHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,60 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class DecodeAuthorizationMessageRequest : public STSRequest
{
public:
AWS_STS_API DecodeAuthorizationMessageRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "DecodeAuthorizationMessage"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The encoded message that was returned with the response.</p>
*/
inline const Aws::String& GetEncodedMessage() const{ return m_encodedMessage; }
inline bool EncodedMessageHasBeenSet() const { return m_encodedMessageHasBeenSet; }
inline void SetEncodedMessage(const Aws::String& value) { m_encodedMessageHasBeenSet = true; m_encodedMessage = value; }
inline void SetEncodedMessage(Aws::String&& value) { m_encodedMessageHasBeenSet = true; m_encodedMessage = std::move(value); }
inline void SetEncodedMessage(const char* value) { m_encodedMessageHasBeenSet = true; m_encodedMessage.assign(value); }
inline DecodeAuthorizationMessageRequest& WithEncodedMessage(const Aws::String& value) { SetEncodedMessage(value); return *this;}
inline DecodeAuthorizationMessageRequest& WithEncodedMessage(Aws::String&& value) { SetEncodedMessage(std::move(value)); return *this;}
inline DecodeAuthorizationMessageRequest& WithEncodedMessage(const char* value) { SetEncodedMessage(value); return *this;}
///@}
private:
Aws::String m_encodedMessage;
bool m_encodedMessageHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,73 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>A document that contains additional information about the authorization
* status of a request from an encoded message that is returned in response to an
* Amazon Web Services request.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/DecodeAuthorizationMessageResponse">AWS
* API Reference</a></p>
*/
class DecodeAuthorizationMessageResult
{
public:
AWS_STS_API DecodeAuthorizationMessageResult();
AWS_STS_API DecodeAuthorizationMessageResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API DecodeAuthorizationMessageResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The API returns a response with the decoded message.</p>
*/
inline const Aws::String& GetDecodedMessage() const{ return m_decodedMessage; }
inline void SetDecodedMessage(const Aws::String& value) { m_decodedMessage = value; }
inline void SetDecodedMessage(Aws::String&& value) { m_decodedMessage = std::move(value); }
inline void SetDecodedMessage(const char* value) { m_decodedMessage.assign(value); }
inline DecodeAuthorizationMessageResult& WithDecodedMessage(const Aws::String& value) { SetDecodedMessage(value); return *this;}
inline DecodeAuthorizationMessageResult& WithDecodedMessage(Aws::String&& value) { SetDecodedMessage(std::move(value)); return *this;}
inline DecodeAuthorizationMessageResult& WithDecodedMessage(const char* value) { SetDecodedMessage(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline DecodeAuthorizationMessageResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline DecodeAuthorizationMessageResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Aws::String m_decodedMessage;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,86 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Identifiers for the federated user that is associated with the
* credentials.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/FederatedUser">AWS
* API Reference</a></p>
*/
class FederatedUser
{
public:
AWS_STS_API FederatedUser();
AWS_STS_API FederatedUser(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API FederatedUser& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
/**
* <p>The string that identifies the federated user associated with the
* credentials, similar to the unique ID of an IAM user.</p>
*/
inline const Aws::String& GetFederatedUserId() const{ return m_federatedUserId; }
inline bool FederatedUserIdHasBeenSet() const { return m_federatedUserIdHasBeenSet; }
inline void SetFederatedUserId(const Aws::String& value) { m_federatedUserIdHasBeenSet = true; m_federatedUserId = value; }
inline void SetFederatedUserId(Aws::String&& value) { m_federatedUserIdHasBeenSet = true; m_federatedUserId = std::move(value); }
inline void SetFederatedUserId(const char* value) { m_federatedUserIdHasBeenSet = true; m_federatedUserId.assign(value); }
inline FederatedUser& WithFederatedUserId(const Aws::String& value) { SetFederatedUserId(value); return *this;}
inline FederatedUser& WithFederatedUserId(Aws::String&& value) { SetFederatedUserId(std::move(value)); return *this;}
inline FederatedUser& WithFederatedUserId(const char* value) { SetFederatedUserId(value); return *this;}
///@}
///@{
/**
* <p>The ARN that specifies the federated user that is associated with the
* credentials. For more information about ARNs and how to use them in policies,
* see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html">IAM
* Identifiers</a> in the <i>IAM User Guide</i>. </p>
*/
inline const Aws::String& GetArn() const{ return m_arn; }
inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; }
inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; }
inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); }
inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); }
inline FederatedUser& WithArn(const Aws::String& value) { SetArn(value); return *this;}
inline FederatedUser& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;}
inline FederatedUser& WithArn(const char* value) { SetArn(value); return *this;}
///@}
private:
Aws::String m_federatedUserId;
bool m_federatedUserIdHasBeenSet = false;
Aws::String m_arn;
bool m_arnHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,62 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class GetAccessKeyInfoRequest : public STSRequest
{
public:
AWS_STS_API GetAccessKeyInfoRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "GetAccessKeyInfo"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The identifier of an access key.</p> <p>This parameter allows (through its
* regex pattern) a string of characters that can consist of any upper- or
* lowercase letter or digit.</p>
*/
inline const Aws::String& GetAccessKeyId() const{ return m_accessKeyId; }
inline bool AccessKeyIdHasBeenSet() const { return m_accessKeyIdHasBeenSet; }
inline void SetAccessKeyId(const Aws::String& value) { m_accessKeyIdHasBeenSet = true; m_accessKeyId = value; }
inline void SetAccessKeyId(Aws::String&& value) { m_accessKeyIdHasBeenSet = true; m_accessKeyId = std::move(value); }
inline void SetAccessKeyId(const char* value) { m_accessKeyIdHasBeenSet = true; m_accessKeyId.assign(value); }
inline GetAccessKeyInfoRequest& WithAccessKeyId(const Aws::String& value) { SetAccessKeyId(value); return *this;}
inline GetAccessKeyInfoRequest& WithAccessKeyId(Aws::String&& value) { SetAccessKeyId(std::move(value)); return *this;}
inline GetAccessKeyInfoRequest& WithAccessKeyId(const char* value) { SetAccessKeyId(value); return *this;}
///@}
private:
Aws::String m_accessKeyId;
bool m_accessKeyIdHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,66 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
class GetAccessKeyInfoResult
{
public:
AWS_STS_API GetAccessKeyInfoResult();
AWS_STS_API GetAccessKeyInfoResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API GetAccessKeyInfoResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The number used to identify the Amazon Web Services account.</p>
*/
inline const Aws::String& GetAccount() const{ return m_account; }
inline void SetAccount(const Aws::String& value) { m_account = value; }
inline void SetAccount(Aws::String&& value) { m_account = std::move(value); }
inline void SetAccount(const char* value) { m_account.assign(value); }
inline GetAccessKeyInfoResult& WithAccount(const Aws::String& value) { SetAccount(value); return *this;}
inline GetAccessKeyInfoResult& WithAccount(Aws::String&& value) { SetAccount(std::move(value)); return *this;}
inline GetAccessKeyInfoResult& WithAccount(const char* value) { SetAccount(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline GetAccessKeyInfoResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline GetAccessKeyInfoResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Aws::String m_account;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,40 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class GetCallerIdentityRequest : public STSRequest
{
public:
AWS_STS_API GetCallerIdentityRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "GetCallerIdentity"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,109 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains the response to a successful <a>GetCallerIdentity</a> request,
* including information about the entity making the request.</p><p><h3>See
* Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetCallerIdentityResponse">AWS
* API Reference</a></p>
*/
class GetCallerIdentityResult
{
public:
AWS_STS_API GetCallerIdentityResult();
AWS_STS_API GetCallerIdentityResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API GetCallerIdentityResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The unique identifier of the calling entity. The exact value depends on the
* type of entity that is making the call. The values returned are those listed in
* the <b>aws:userid</b> column in the <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#principaltable">Principal
* table</a> found on the <b>Policy Variables</b> reference page in the <i>IAM User
* Guide</i>.</p>
*/
inline const Aws::String& GetUserId() const{ return m_userId; }
inline void SetUserId(const Aws::String& value) { m_userId = value; }
inline void SetUserId(Aws::String&& value) { m_userId = std::move(value); }
inline void SetUserId(const char* value) { m_userId.assign(value); }
inline GetCallerIdentityResult& WithUserId(const Aws::String& value) { SetUserId(value); return *this;}
inline GetCallerIdentityResult& WithUserId(Aws::String&& value) { SetUserId(std::move(value)); return *this;}
inline GetCallerIdentityResult& WithUserId(const char* value) { SetUserId(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Web Services account ID number of the account that owns or
* contains the calling entity.</p>
*/
inline const Aws::String& GetAccount() const{ return m_account; }
inline void SetAccount(const Aws::String& value) { m_account = value; }
inline void SetAccount(Aws::String&& value) { m_account = std::move(value); }
inline void SetAccount(const char* value) { m_account.assign(value); }
inline GetCallerIdentityResult& WithAccount(const Aws::String& value) { SetAccount(value); return *this;}
inline GetCallerIdentityResult& WithAccount(Aws::String&& value) { SetAccount(std::move(value)); return *this;}
inline GetCallerIdentityResult& WithAccount(const char* value) { SetAccount(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Web Services ARN associated with the calling entity.</p>
*/
inline const Aws::String& GetArn() const{ return m_arn; }
inline void SetArn(const Aws::String& value) { m_arn = value; }
inline void SetArn(Aws::String&& value) { m_arn = std::move(value); }
inline void SetArn(const char* value) { m_arn.assign(value); }
inline GetCallerIdentityResult& WithArn(const Aws::String& value) { SetArn(value); return *this;}
inline GetCallerIdentityResult& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;}
inline GetCallerIdentityResult& WithArn(const char* value) { SetArn(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline GetCallerIdentityResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline GetCallerIdentityResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Aws::String m_userId;
Aws::String m_account;
Aws::String m_arn;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,222 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/sts/model/PolicyDescriptorType.h>
#include <aws/sts/model/Tag.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class GetFederationTokenRequest : public STSRequest
{
public:
AWS_STS_API GetFederationTokenRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "GetFederationToken"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The name of the federated user. The name is used as an identifier for the
* temporary security credentials (such as <code>Bob</code>). For example, you can
* reference the federated user name in a resource-based policy, such as in an
* Amazon S3 bucket policy.</p> <p>The regex used to validate this parameter is a
* string of characters consisting of upper- and lower-case alphanumeric characters
* with no spaces. You can also include underscores or any of the following
* characters: =,.@-</p>
*/
inline const Aws::String& GetName() const{ return m_name; }
inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
inline GetFederationTokenRequest& WithName(const Aws::String& value) { SetName(value); return *this;}
inline GetFederationTokenRequest& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
inline GetFederationTokenRequest& WithName(const char* value) { SetName(value); return *this;}
///@}
///@{
/**
* <p>An IAM policy in JSON format that you want to use as an inline session
* policy.</p> <p>You must pass an inline or managed <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">session
* policy</a> to this operation. You can pass a single JSON policy document to use
* as an inline session policy. You can also specify up to 10 managed policy Amazon
* Resource Names (ARNs) to use as managed session policies.</p> <p>This parameter
* is optional. However, if you do not pass any session policies, then the
* resulting federated user session has no permissions.</p> <p>When you pass
* session policies, the session permissions are the intersection of the IAM user
* policies and the session policies that you pass. This gives you a way to further
* restrict the permissions for a federated user. You cannot use session policies
* to grant more permissions than those that are defined in the permissions policy
* of the IAM user. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p> <p>The resulting credentials can
* be used to access a resource that has a resource-based policy. If that policy
* specifically references the federated user session in the <code>Principal</code>
* element of the policy, the session has the permissions allowed by the policy.
* These permissions are granted in addition to the permissions that are granted by
* the session policies.</p> <p>The plaintext that you use for both inline and
* managed session policies can't exceed 2,048 characters. The JSON policy
* characters can be any ASCII character from the space character to the end of the
* valid character list (\u0020 through \u00FF). It can also include the tab
* (\u0009), linefeed (\u000A), and carriage return (\u000D) characters.</p>
* <p>An Amazon Web Services conversion compresses the passed inline session
* policy, managed policy ARNs, and session tags into a packed binary format that
* has a separate limit. Your request can fail for this limit even if your
* plaintext meets the other requirements. The <code>PackedPolicySize</code>
* response element indicates by percentage how close the policies and tags for
* your request are to the upper size limit.</p>
*/
inline const Aws::String& GetPolicy() const{ return m_policy; }
inline bool PolicyHasBeenSet() const { return m_policyHasBeenSet; }
inline void SetPolicy(const Aws::String& value) { m_policyHasBeenSet = true; m_policy = value; }
inline void SetPolicy(Aws::String&& value) { m_policyHasBeenSet = true; m_policy = std::move(value); }
inline void SetPolicy(const char* value) { m_policyHasBeenSet = true; m_policy.assign(value); }
inline GetFederationTokenRequest& WithPolicy(const Aws::String& value) { SetPolicy(value); return *this;}
inline GetFederationTokenRequest& WithPolicy(Aws::String&& value) { SetPolicy(std::move(value)); return *this;}
inline GetFederationTokenRequest& WithPolicy(const char* value) { SetPolicy(value); return *this;}
///@}
///@{
/**
* <p>The Amazon Resource Names (ARNs) of the IAM managed policies that you want to
* use as a managed session policy. The policies must exist in the same account as
* the IAM user that is requesting federated access.</p> <p>You must pass an inline
* or managed <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">session
* policy</a> to this operation. You can pass a single JSON policy document to use
* as an inline session policy. You can also specify up to 10 managed policy Amazon
* Resource Names (ARNs) to use as managed session policies. The plaintext that you
* use for both inline and managed session policies can't exceed 2,048 characters.
* You can provide up to 10 managed policy ARNs. For more information about ARNs,
* see <a
* href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon
* Resource Names (ARNs) and Amazon Web Services Service Namespaces</a> in the
* Amazon Web Services General Reference.</p> <p>This parameter is optional.
* However, if you do not pass any session policies, then the resulting federated
* user session has no permissions.</p> <p>When you pass session policies, the
* session permissions are the intersection of the IAM user policies and the
* session policies that you pass. This gives you a way to further restrict the
* permissions for a federated user. You cannot use session policies to grant more
* permissions than those that are defined in the permissions policy of the IAM
* user. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session">Session
* Policies</a> in the <i>IAM User Guide</i>.</p> <p>The resulting credentials can
* be used to access a resource that has a resource-based policy. If that policy
* specifically references the federated user session in the <code>Principal</code>
* element of the policy, the session has the permissions allowed by the policy.
* These permissions are granted in addition to the permissions that are granted by
* the session policies.</p> <p>An Amazon Web Services conversion compresses
* the passed inline session policy, managed policy ARNs, and session tags into a
* packed binary format that has a separate limit. Your request can fail for this
* limit even if your plaintext meets the other requirements. The
* <code>PackedPolicySize</code> response element indicates by percentage how close
* the policies and tags for your request are to the upper size limit.</p>
*/
inline const Aws::Vector<PolicyDescriptorType>& GetPolicyArns() const{ return m_policyArns; }
inline bool PolicyArnsHasBeenSet() const { return m_policyArnsHasBeenSet; }
inline void SetPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { m_policyArnsHasBeenSet = true; m_policyArns = value; }
inline void SetPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { m_policyArnsHasBeenSet = true; m_policyArns = std::move(value); }
inline GetFederationTokenRequest& WithPolicyArns(const Aws::Vector<PolicyDescriptorType>& value) { SetPolicyArns(value); return *this;}
inline GetFederationTokenRequest& WithPolicyArns(Aws::Vector<PolicyDescriptorType>&& value) { SetPolicyArns(std::move(value)); return *this;}
inline GetFederationTokenRequest& AddPolicyArns(const PolicyDescriptorType& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(value); return *this; }
inline GetFederationTokenRequest& AddPolicyArns(PolicyDescriptorType&& value) { m_policyArnsHasBeenSet = true; m_policyArns.push_back(std::move(value)); return *this; }
///@}
///@{
/**
* <p>The duration, in seconds, that the session should last. Acceptable durations
* for federation sessions range from 900 seconds (15 minutes) to 129,600 seconds
* (36 hours), with 43,200 seconds (12 hours) as the default. Sessions obtained
* using root user credentials are restricted to a maximum of 3,600 seconds (one
* hour). If the specified duration is longer than one hour, the session obtained
* by using root user credentials defaults to one hour.</p>
*/
inline int GetDurationSeconds() const{ return m_durationSeconds; }
inline bool DurationSecondsHasBeenSet() const { return m_durationSecondsHasBeenSet; }
inline void SetDurationSeconds(int value) { m_durationSecondsHasBeenSet = true; m_durationSeconds = value; }
inline GetFederationTokenRequest& WithDurationSeconds(int value) { SetDurationSeconds(value); return *this;}
///@}
///@{
/**
* <p>A list of session tags. Each session tag consists of a key name and an
* associated value. For more information about session tags, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html">Passing
* Session Tags in STS</a> in the <i>IAM User Guide</i>.</p> <p>This parameter is
* optional. You can pass up to 50 session tags. The plaintext session tag keys
* cant exceed 128 characters and the values cant exceed 256 characters. For
* these and additional limits, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length">IAM
* and STS Character Limits</a> in the <i>IAM User Guide</i>.</p> <p>An
* Amazon Web Services conversion compresses the passed inline session policy,
* managed policy ARNs, and session tags into a packed binary format that has a
* separate limit. Your request can fail for this limit even if your plaintext
* meets the other requirements. The <code>PackedPolicySize</code> response element
* indicates by percentage how close the policies and tags for your request are to
* the upper size limit.</p> <p>You can pass a session tag with the same
* key as a tag that is already attached to the user you are federating. When you
* do, session tags override a user tag with the same key. </p> <p>Tag keyvalue
* pairs are not case sensitive, but case is preserved. This means that you cannot
* have separate <code>Department</code> and <code>department</code> tag keys.
* Assume that the role has the <code>Department</code>=<code>Marketing</code> tag
* and you pass the <code>department</code>=<code>engineering</code> session tag.
* <code>Department</code> and <code>department</code> are not saved as separate
* tags, and the session tag passed in the request takes precedence over the role
* tag.</p>
*/
inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
inline GetFederationTokenRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
inline GetFederationTokenRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
inline GetFederationTokenRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
inline GetFederationTokenRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
///@}
private:
Aws::String m_name;
bool m_nameHasBeenSet = false;
Aws::String m_policy;
bool m_policyHasBeenSet = false;
Aws::Vector<PolicyDescriptorType> m_policyArns;
bool m_policyArnsHasBeenSet = false;
int m_durationSeconds;
bool m_durationSecondsHasBeenSet = false;
Aws::Vector<Tag> m_tags;
bool m_tagsHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,105 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/model/Credentials.h>
#include <aws/sts/model/FederatedUser.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains the response to a successful <a>GetFederationToken</a> request,
* including temporary Amazon Web Services credentials that can be used to make
* Amazon Web Services requests. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetFederationTokenResponse">AWS
* API Reference</a></p>
*/
class GetFederationTokenResult
{
public:
AWS_STS_API GetFederationTokenResult();
AWS_STS_API GetFederationTokenResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API GetFederationTokenResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The temporary security credentials, which include an access key ID, a secret
* access key, and a security (or session) token.</p> <p>The size of the
* security token that STS API operations return is not fixed. We strongly
* recommend that you make no assumptions about the maximum size.</p>
*/
inline const Credentials& GetCredentials() const{ return m_credentials; }
inline void SetCredentials(const Credentials& value) { m_credentials = value; }
inline void SetCredentials(Credentials&& value) { m_credentials = std::move(value); }
inline GetFederationTokenResult& WithCredentials(const Credentials& value) { SetCredentials(value); return *this;}
inline GetFederationTokenResult& WithCredentials(Credentials&& value) { SetCredentials(std::move(value)); return *this;}
///@}
///@{
/**
* <p>Identifiers for the federated user associated with the credentials (such as
* <code>arn:aws:sts::123456789012:federated-user/Bob</code> or
* <code>123456789012:Bob</code>). You can use the federated user's ARN in your
* resource-based policies, such as an Amazon S3 bucket policy. </p>
*/
inline const FederatedUser& GetFederatedUser() const{ return m_federatedUser; }
inline void SetFederatedUser(const FederatedUser& value) { m_federatedUser = value; }
inline void SetFederatedUser(FederatedUser&& value) { m_federatedUser = std::move(value); }
inline GetFederationTokenResult& WithFederatedUser(const FederatedUser& value) { SetFederatedUser(value); return *this;}
inline GetFederationTokenResult& WithFederatedUser(FederatedUser&& value) { SetFederatedUser(std::move(value)); return *this;}
///@}
///@{
/**
* <p>A percentage value that indicates the packed size of the session policies and
* session tags combined passed in the request. The request fails if the packed
* size is greater than 100 percent, which means the policies and tags exceeded the
* allowed space.</p>
*/
inline int GetPackedPolicySize() const{ return m_packedPolicySize; }
inline void SetPackedPolicySize(int value) { m_packedPolicySize = value; }
inline GetFederationTokenResult& WithPackedPolicySize(int value) { SetPackedPolicySize(value); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline GetFederationTokenResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline GetFederationTokenResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Credentials m_credentials;
FederatedUser m_federatedUser;
int m_packedPolicySize;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,111 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/STSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace STS
{
namespace Model
{
/**
*/
class GetSessionTokenRequest : public STSRequest
{
public:
AWS_STS_API GetSessionTokenRequest();
// Service request name is the Operation name which will send this request out,
// each operation should has unique request name, so that we can get operation's name from this request.
// Note: this is not true for response, multiple operations may have the same response name,
// so we can not get operation's name from response.
inline virtual const char* GetServiceRequestName() const override { return "GetSessionToken"; }
AWS_STS_API Aws::String SerializePayload() const override;
protected:
AWS_STS_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
public:
///@{
/**
* <p>The duration, in seconds, that the credentials should remain valid.
* Acceptable durations for IAM user sessions range from 900 seconds (15 minutes)
* to 129,600 seconds (36 hours), with 43,200 seconds (12 hours) as the default.
* Sessions for Amazon Web Services account owners are restricted to a maximum of
* 3,600 seconds (one hour). If the duration is longer than one hour, the session
* for Amazon Web Services account owners defaults to one hour.</p>
*/
inline int GetDurationSeconds() const{ return m_durationSeconds; }
inline bool DurationSecondsHasBeenSet() const { return m_durationSecondsHasBeenSet; }
inline void SetDurationSeconds(int value) { m_durationSecondsHasBeenSet = true; m_durationSeconds = value; }
inline GetSessionTokenRequest& WithDurationSeconds(int value) { SetDurationSeconds(value); return *this;}
///@}
///@{
/**
* <p>The identification number of the MFA device that is associated with the IAM
* user who is making the <code>GetSessionToken</code> call. Specify this value if
* the IAM user has a policy that requires MFA authentication. The value is either
* the serial number for a hardware device (such as <code>GAHT12345678</code>) or
* an Amazon Resource Name (ARN) for a virtual device (such as
* <code>arn:aws:iam::123456789012:mfa/user</code>). You can find the device for an
* IAM user by going to the Amazon Web Services Management Console and viewing the
* user's security credentials. </p> <p>The regex used to validate this parameter
* is a string of characters consisting of upper- and lower-case alphanumeric
* characters with no spaces. You can also include underscores or any of the
* following characters: =,.@:/-</p>
*/
inline const Aws::String& GetSerialNumber() const{ return m_serialNumber; }
inline bool SerialNumberHasBeenSet() const { return m_serialNumberHasBeenSet; }
inline void SetSerialNumber(const Aws::String& value) { m_serialNumberHasBeenSet = true; m_serialNumber = value; }
inline void SetSerialNumber(Aws::String&& value) { m_serialNumberHasBeenSet = true; m_serialNumber = std::move(value); }
inline void SetSerialNumber(const char* value) { m_serialNumberHasBeenSet = true; m_serialNumber.assign(value); }
inline GetSessionTokenRequest& WithSerialNumber(const Aws::String& value) { SetSerialNumber(value); return *this;}
inline GetSessionTokenRequest& WithSerialNumber(Aws::String&& value) { SetSerialNumber(std::move(value)); return *this;}
inline GetSessionTokenRequest& WithSerialNumber(const char* value) { SetSerialNumber(value); return *this;}
///@}
///@{
/**
* <p>The value provided by the MFA device, if MFA is required. If any policy
* requires the IAM user to submit an MFA code, specify this value. If MFA
* authentication is required, the user must provide a code when requesting a set
* of temporary security credentials. A user who fails to provide the code receives
* an "access denied" response when requesting resources that require MFA
* authentication.</p> <p>The format for this parameter, as described by its regex
* pattern, is a sequence of six numeric digits.</p>
*/
inline const Aws::String& GetTokenCode() const{ return m_tokenCode; }
inline bool TokenCodeHasBeenSet() const { return m_tokenCodeHasBeenSet; }
inline void SetTokenCode(const Aws::String& value) { m_tokenCodeHasBeenSet = true; m_tokenCode = value; }
inline void SetTokenCode(Aws::String&& value) { m_tokenCodeHasBeenSet = true; m_tokenCode = std::move(value); }
inline void SetTokenCode(const char* value) { m_tokenCodeHasBeenSet = true; m_tokenCode.assign(value); }
inline GetSessionTokenRequest& WithTokenCode(const Aws::String& value) { SetTokenCode(value); return *this;}
inline GetSessionTokenRequest& WithTokenCode(Aws::String&& value) { SetTokenCode(std::move(value)); return *this;}
inline GetSessionTokenRequest& WithTokenCode(const char* value) { SetTokenCode(value); return *this;}
///@}
private:
int m_durationSeconds;
bool m_durationSecondsHasBeenSet = false;
Aws::String m_serialNumber;
bool m_serialNumberHasBeenSet = false;
Aws::String m_tokenCode;
bool m_tokenCodeHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,74 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/sts/model/Credentials.h>
#include <aws/sts/model/ResponseMetadata.h>
#include <utility>
namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains the response to a successful <a>GetSessionToken</a> request,
* including temporary Amazon Web Services credentials that can be used to make
* Amazon Web Services requests. </p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/GetSessionTokenResponse">AWS
* API Reference</a></p>
*/
class GetSessionTokenResult
{
public:
AWS_STS_API GetSessionTokenResult();
AWS_STS_API GetSessionTokenResult(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
AWS_STS_API GetSessionTokenResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Xml::XmlDocument>& result);
///@{
/**
* <p>The temporary security credentials, which include an access key ID, a secret
* access key, and a security (or session) token.</p> <p>The size of the
* security token that STS API operations return is not fixed. We strongly
* recommend that you make no assumptions about the maximum size.</p>
*/
inline const Credentials& GetCredentials() const{ return m_credentials; }
inline void SetCredentials(const Credentials& value) { m_credentials = value; }
inline void SetCredentials(Credentials&& value) { m_credentials = std::move(value); }
inline GetSessionTokenResult& WithCredentials(const Credentials& value) { SetCredentials(value); return *this;}
inline GetSessionTokenResult& WithCredentials(Credentials&& value) { SetCredentials(std::move(value)); return *this;}
///@}
///@{
inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
inline GetSessionTokenResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
inline GetSessionTokenResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
///@}
private:
Credentials m_credentials;
ResponseMetadata m_responseMetadata;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,68 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>A reference to the IAM managed policy that is passed as a session policy for
* a role session or a federated user session.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/PolicyDescriptorType">AWS
* API Reference</a></p>
*/
class PolicyDescriptorType
{
public:
AWS_STS_API PolicyDescriptorType();
AWS_STS_API PolicyDescriptorType(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API PolicyDescriptorType& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
/**
* <p>The Amazon Resource Name (ARN) of the IAM managed policy to use as a session
* policy for the role. For more information about ARNs, see <a
* href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon
* Resource Names (ARNs) and Amazon Web Services Service Namespaces</a> in the
* <i>Amazon Web Services General Reference</i>.</p>
*/
inline const Aws::String& GetArn() const{ return m_arn; }
inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; }
inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; }
inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); }
inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); }
inline PolicyDescriptorType& WithArn(const Aws::String& value) { SetArn(value); return *this;}
inline PolicyDescriptorType& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;}
inline PolicyDescriptorType& WithArn(const char* value) { SetArn(value); return *this;}
///@}
private:
Aws::String m_arn;
bool m_arnHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,85 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>Contains information about the provided context. This includes the signed and
* encrypted trusted context assertion and the context provider ARN from which the
* trusted context assertion was generated.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/ProvidedContext">AWS
* API Reference</a></p>
*/
class ProvidedContext
{
public:
AWS_STS_API ProvidedContext();
AWS_STS_API ProvidedContext(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API ProvidedContext& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
/**
* <p>The context provider ARN from which the trusted context assertion was
* generated.</p>
*/
inline const Aws::String& GetProviderArn() const{ return m_providerArn; }
inline bool ProviderArnHasBeenSet() const { return m_providerArnHasBeenSet; }
inline void SetProviderArn(const Aws::String& value) { m_providerArnHasBeenSet = true; m_providerArn = value; }
inline void SetProviderArn(Aws::String&& value) { m_providerArnHasBeenSet = true; m_providerArn = std::move(value); }
inline void SetProviderArn(const char* value) { m_providerArnHasBeenSet = true; m_providerArn.assign(value); }
inline ProvidedContext& WithProviderArn(const Aws::String& value) { SetProviderArn(value); return *this;}
inline ProvidedContext& WithProviderArn(Aws::String&& value) { SetProviderArn(std::move(value)); return *this;}
inline ProvidedContext& WithProviderArn(const char* value) { SetProviderArn(value); return *this;}
///@}
///@{
/**
* <p>The signed and encrypted trusted context assertion generated by the context
* provider. The trusted context assertion is signed and encrypted by Amazon Web
* Services STS.</p>
*/
inline const Aws::String& GetContextAssertion() const{ return m_contextAssertion; }
inline bool ContextAssertionHasBeenSet() const { return m_contextAssertionHasBeenSet; }
inline void SetContextAssertion(const Aws::String& value) { m_contextAssertionHasBeenSet = true; m_contextAssertion = value; }
inline void SetContextAssertion(Aws::String&& value) { m_contextAssertionHasBeenSet = true; m_contextAssertion = std::move(value); }
inline void SetContextAssertion(const char* value) { m_contextAssertionHasBeenSet = true; m_contextAssertion.assign(value); }
inline ProvidedContext& WithContextAssertion(const Aws::String& value) { SetContextAssertion(value); return *this;}
inline ProvidedContext& WithContextAssertion(Aws::String&& value) { SetContextAssertion(std::move(value)); return *this;}
inline ProvidedContext& WithContextAssertion(const char* value) { SetContextAssertion(value); return *this;}
///@}
private:
Aws::String m_providerArn;
bool m_providerArnHasBeenSet = false;
Aws::String m_contextAssertion;
bool m_contextAssertionHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,56 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
class ResponseMetadata
{
public:
AWS_STS_API ResponseMetadata();
AWS_STS_API ResponseMetadata(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API ResponseMetadata& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
inline const Aws::String& GetRequestId() const{ return m_requestId; }
inline bool RequestIdHasBeenSet() const { return m_requestIdHasBeenSet; }
inline void SetRequestId(const Aws::String& value) { m_requestIdHasBeenSet = true; m_requestId = value; }
inline void SetRequestId(Aws::String&& value) { m_requestIdHasBeenSet = true; m_requestId = std::move(value); }
inline void SetRequestId(const char* value) { m_requestIdHasBeenSet = true; m_requestId.assign(value); }
inline ResponseMetadata& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;}
inline ResponseMetadata& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;}
inline ResponseMetadata& WithRequestId(const char* value) { SetRequestId(value); return *this;}
///@}
private:
Aws::String m_requestId;
bool m_requestIdHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws

View File

@@ -0,0 +1,93 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/sts/STS_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace STS
{
namespace Model
{
/**
* <p>You can pass custom key-value pair attributes when you assume a role or
* federate a user. These are called session tags. You can then use the session
* tags to control access to resources. For more information, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html">Tagging
* Amazon Web Services STS Sessions</a> in the <i>IAM User Guide</i>.</p><p><h3>See
* Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/Tag">AWS API
* Reference</a></p>
*/
class Tag
{
public:
AWS_STS_API Tag();
AWS_STS_API Tag(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API Tag& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
AWS_STS_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
AWS_STS_API void OutputToStream(Aws::OStream& oStream, const char* location) const;
///@{
/**
* <p>The key for a session tag.</p> <p>You can pass up to 50 session tags. The
* plain text session tag keys cant exceed 128 characters. For these and
* additional limits, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length">IAM
* and STS Character Limits</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::String& GetKey() const{ return m_key; }
inline bool KeyHasBeenSet() const { return m_keyHasBeenSet; }
inline void SetKey(const Aws::String& value) { m_keyHasBeenSet = true; m_key = value; }
inline void SetKey(Aws::String&& value) { m_keyHasBeenSet = true; m_key = std::move(value); }
inline void SetKey(const char* value) { m_keyHasBeenSet = true; m_key.assign(value); }
inline Tag& WithKey(const Aws::String& value) { SetKey(value); return *this;}
inline Tag& WithKey(Aws::String&& value) { SetKey(std::move(value)); return *this;}
inline Tag& WithKey(const char* value) { SetKey(value); return *this;}
///@}
///@{
/**
* <p>The value for a session tag.</p> <p>You can pass up to 50 session tags. The
* plain text session tag values cant exceed 256 characters. For these and
* additional limits, see <a
* href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html#reference_iam-limits-entity-length">IAM
* and STS Character Limits</a> in the <i>IAM User Guide</i>.</p>
*/
inline const Aws::String& GetValue() const{ return m_value; }
inline bool ValueHasBeenSet() const { return m_valueHasBeenSet; }
inline void SetValue(const Aws::String& value) { m_valueHasBeenSet = true; m_value = value; }
inline void SetValue(Aws::String&& value) { m_valueHasBeenSet = true; m_value = std::move(value); }
inline void SetValue(const char* value) { m_valueHasBeenSet = true; m_value.assign(value); }
inline Tag& WithValue(const Aws::String& value) { SetValue(value); return *this;}
inline Tag& WithValue(Aws::String&& value) { SetValue(std::move(value)); return *this;}
inline Tag& WithValue(const char* value) { SetValue(value); return *this;}
///@}
private:
Aws::String m_key;
bool m_keyHasBeenSet = false;
Aws::String m_value;
bool m_valueHasBeenSet = false;
};
} // namespace Model
} // namespace STS
} // namespace Aws