/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the sso-2019-06-10.normal.json service model.
*/
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using Amazon.SSO.Model;
using Amazon.SSO.Model.Internal.MarshallTransformations;
using Amazon.SSO.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.SSO
{
///
/// Implementation for accessing SSO
///
/// AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service
/// that makes it easy for you to assign user access to IAM Identity Center resources
/// such as the AWS access portal. Users can get AWS account applications and roles assigned
/// to them and get federated into the application.
///
///
///
/// Although AWS Single Sign-On was renamed, the sso
and identitystore
/// API namespaces will continue to retain their original name for backward compatibility
/// purposes. For more information, see IAM
/// Identity Center rename.
///
///
///
/// This reference guide describes the IAM Identity Center Portal operations that you
/// can call programatically and includes detailed information on data types and errors.
///
///
///
/// AWS provides SDKs that consist of libraries and sample code for various programming
/// languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide
/// a convenient way to create programmatic access to IAM Identity Center and other AWS
/// services. For more information about the AWS SDKs, including how to download and install
/// them, see Tools for Amazon Web Services.
///
///
///
public partial class AmazonSSOClient : AmazonServiceClient, IAmazonSSO
{
private static IServiceMetadata serviceMetadata = new AmazonSSOMetadata();
#region Constructors
///
/// Constructs AmazonSSOClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
public AmazonSSOClient()
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonSSOConfig()) { }
///
/// Constructs AmazonSSOClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The region to connect.
public AmazonSSOClient(RegionEndpoint region)
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonSSOConfig{RegionEndpoint = region}) { }
///
/// Constructs AmazonSSOClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The AmazonSSOClient Configuration Object
public AmazonSSOClient(AmazonSSOConfig config)
: base(FallbackCredentialsFactory.GetCredentials(config), config){}
///
/// Constructs AmazonSSOClient with AWS Credentials
///
/// AWS Credentials
public AmazonSSOClient(AWSCredentials credentials)
: this(credentials, new AmazonSSOConfig())
{
}
///
/// Constructs AmazonSSOClient with AWS Credentials
///
/// AWS Credentials
/// The region to connect.
public AmazonSSOClient(AWSCredentials credentials, RegionEndpoint region)
: this(credentials, new AmazonSSOConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonSSOClient with AWS Credentials and an
/// AmazonSSOClient Configuration object.
///
/// AWS Credentials
/// The AmazonSSOClient Configuration Object
public AmazonSSOClient(AWSCredentials credentials, AmazonSSOConfig clientConfig)
: base(credentials, clientConfig)
{
}
///
/// Constructs AmazonSSOClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
public AmazonSSOClient(string awsAccessKeyId, string awsSecretAccessKey)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonSSOConfig())
{
}
///
/// Constructs AmazonSSOClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The region to connect.
public AmazonSSOClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonSSOConfig() {RegionEndpoint=region})
{
}
///
/// Constructs AmazonSSOClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonSSOClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The AmazonSSOClient Configuration Object
public AmazonSSOClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonSSOConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
{
}
///
/// Constructs AmazonSSOClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
public AmazonSSOClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonSSOConfig())
{
}
///
/// Constructs AmazonSSOClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The region to connect.
public AmazonSSOClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonSSOConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonSSOClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonSSOClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The AmazonSSOClient Configuration Object
public AmazonSSOClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonSSOConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
{
}
#endregion
#if AWS_ASYNC_ENUMERABLES_API
private ISSOPaginatorFactory _paginators;
///
/// Paginators for the service
///
public ISSOPaginatorFactory Paginators
{
get
{
if (this._paginators == null)
{
this._paginators = new SSOPaginatorFactory(this);
}
return this._paginators;
}
}
#endif
#region Overrides
///
/// Creates the signer for the service.
///
protected override AbstractAWSSigner CreateSigner()
{
return new AWS4Signer();
}
///
/// Customizes the runtime pipeline.
///
/// Runtime pipeline for the current client.
protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
{
pipeline.RemoveHandler();
pipeline.AddHandlerAfter(new AmazonSSOEndpointResolver());
}
///
/// Capture metadata for the service.
///
protected override IServiceMetadata ServiceMetadata
{
get
{
return serviceMetadata;
}
}
#endregion
#region Dispose
///
/// Disposes the service client.
///
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
#endregion
#region GetRoleCredentials
internal virtual GetRoleCredentialsResponse GetRoleCredentials(GetRoleCredentialsRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = GetRoleCredentialsRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetRoleCredentialsResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Returns the STS short-term credentials for a given role name that is assigned to the
/// user.
///
/// Container for the necessary parameters to execute the GetRoleCredentials service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the GetRoleCredentials service method, as returned by SSO.
///
/// Indicates that a problem occurred with the input to the request. For example, a required
/// parameter might be missing or out of range.
///
///
/// The specified resource doesn't exist.
///
///
/// Indicates that the request is being made too frequently and is more than what the
/// server can handle.
///
///
/// Indicates that the request is not authorized. This can happen due to an invalid access
/// token in the request.
///
/// REST API Reference for GetRoleCredentials Operation
public virtual Task GetRoleCredentialsAsync(GetRoleCredentialsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = GetRoleCredentialsRequestMarshaller.Instance;
options.ResponseUnmarshaller = GetRoleCredentialsResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region ListAccountRoles
internal virtual ListAccountRolesResponse ListAccountRoles(ListAccountRolesRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = ListAccountRolesRequestMarshaller.Instance;
options.ResponseUnmarshaller = ListAccountRolesResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Lists all roles that are assigned to the user for a given AWS account.
///
/// Container for the necessary parameters to execute the ListAccountRoles service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the ListAccountRoles service method, as returned by SSO.
///
/// Indicates that a problem occurred with the input to the request. For example, a required
/// parameter might be missing or out of range.
///
///
/// The specified resource doesn't exist.
///
///
/// Indicates that the request is being made too frequently and is more than what the
/// server can handle.
///
///
/// Indicates that the request is not authorized. This can happen due to an invalid access
/// token in the request.
///
/// REST API Reference for ListAccountRoles Operation
public virtual Task ListAccountRolesAsync(ListAccountRolesRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = ListAccountRolesRequestMarshaller.Instance;
options.ResponseUnmarshaller = ListAccountRolesResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region ListAccounts
internal virtual ListAccountsResponse ListAccounts(ListAccountsRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = ListAccountsRequestMarshaller.Instance;
options.ResponseUnmarshaller = ListAccountsResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Lists all AWS accounts assigned to the user. These AWS accounts are assigned by the
/// administrator of the account. For more information, see Assign
/// User Access in the IAM Identity Center User Guide. This operation returns
/// a paginated response.
///
/// Container for the necessary parameters to execute the ListAccounts service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the ListAccounts service method, as returned by SSO.
///
/// Indicates that a problem occurred with the input to the request. For example, a required
/// parameter might be missing or out of range.
///
///
/// The specified resource doesn't exist.
///
///
/// Indicates that the request is being made too frequently and is more than what the
/// server can handle.
///
///
/// Indicates that the request is not authorized. This can happen due to an invalid access
/// token in the request.
///
/// REST API Reference for ListAccounts Operation
public virtual Task ListAccountsAsync(ListAccountsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = ListAccountsRequestMarshaller.Instance;
options.ResponseUnmarshaller = ListAccountsResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region Logout
internal virtual LogoutResponse Logout(LogoutRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = LogoutRequestMarshaller.Instance;
options.ResponseUnmarshaller = LogoutResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Removes the locally stored SSO tokens from the client-side cache and sends an API
/// call to the IAM Identity Center service to invalidate the corresponding server-side
/// IAM Identity Center sign in session.
///
///
///
/// If a user uses IAM Identity Center to access the AWS CLI, the user’s IAM Identity
/// Center sign in session is used to obtain an IAM session, as specified in the corresponding
/// IAM Identity Center permission set. More specifically, IAM Identity Center assumes
/// an IAM role in the target account on behalf of the user, and the corresponding temporary
/// AWS credentials are returned to the client.
///
///
///
/// After user logout, any existing IAM role sessions that were created by using IAM Identity
/// Center permission sets continue based on the duration configured in the permission
/// set. For more information, see User
/// authentications in the IAM Identity Center User Guide.
///
///
///
/// Container for the necessary parameters to execute the Logout service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the Logout service method, as returned by SSO.
///
/// Indicates that a problem occurred with the input to the request. For example, a required
/// parameter might be missing or out of range.
///
///
/// Indicates that the request is being made too frequently and is more than what the
/// server can handle.
///
///
/// Indicates that the request is not authorized. This can happen due to an invalid access
/// token in the request.
///
/// REST API Reference for Logout Operation
public virtual Task LogoutAsync(LogoutRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = LogoutRequestMarshaller.Instance;
options.ResponseUnmarshaller = LogoutResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
}
}