AWS Security Token Service (STS) Java SDK providing client classes for temporary credential authentication mechanisms
npx @tessl/cli install tessl/maven-software-amazon-awssdk--sts@2.33.0The AWS STS (Security Token Service) Java SDK provides comprehensive client classes for communicating with AWS Security Token Service. It enables Java applications to obtain temporary AWS credentials through various authentication mechanisms including role assumption, web identity token authentication, SAML-based authentication, and federation tokens. The SDK includes both low-level client operations and high-level credential providers with built-in session management and automatic credential refresh capabilities.
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>sts</artifactId>
<version>2.33.4</version>
</dependency>import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.*;
import software.amazon.awssdk.services.sts.auth.*;
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.regions.Region;import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.*;
// Create STS client
StsClient stsClient = StsClient.builder()
.region(Region.US_EAST_1)
.build();
// Assume a role
AssumeRoleRequest request = AssumeRoleRequest.builder()
.roleArn("arn:aws:iam::123456789012:role/MyRole")
.roleSessionName("MySession")
.durationSeconds(3600)
.build();
AssumeRoleResponse response = stsClient.assumeRole(request);
Credentials credentials = response.credentials();
System.out.println("Access Key: " + credentials.accessKeyId());
System.out.println("Secret Key: " + credentials.secretAccessKey());
System.out.println("Session Token: " + credentials.sessionToken());import software.amazon.awssdk.services.sts.auth.StsAssumeRoleCredentialsProvider;
import software.amazon.awssdk.auth.credentials.AwsCredentials;
// Create credential provider
StsAssumeRoleCredentialsProvider credentialsProvider =
StsAssumeRoleCredentialsProvider.builder()
.refreshRequest(AssumeRoleRequest.builder()
.roleArn("arn:aws:iam::123456789012:role/MyRole")
.roleSessionName("MySession")
.build())
.build();
// Get credentials (automatically cached and refreshed)
AwsCredentials credentials = credentialsProvider.resolveCredentials();The AWS STS Java SDK is organized around several key components:
Direct access to all AWS STS operations for temporary credential management, caller identity verification, and authorization message decoding.
public interface StsClient extends SdkClient {
AssumeRoleResponse assumeRole(AssumeRoleRequest request);
AssumeRoleWithSAMLResponse assumeRoleWithSAML(AssumeRoleWithSAMLRequest request);
AssumeRoleWithWebIdentityResponse assumeRoleWithWebIdentity(AssumeRoleWithWebIdentityRequest request);
AssumeRootResponse assumeRoot(AssumeRootRequest request);
DecodeAuthorizationMessageResponse decodeAuthorizationMessage(DecodeAuthorizationMessageRequest request);
GetAccessKeyInfoResponse getAccessKeyInfo(GetAccessKeyInfoRequest request);
GetCallerIdentityResponse getCallerIdentity(GetCallerIdentityRequest request);
GetFederationTokenResponse getFederationToken(GetFederationTokenRequest request);
GetSessionTokenResponse getSessionToken(GetSessionTokenRequest request);
static StsClientBuilder builder();
}High-level credential providers that automatically handle credential acquisition, caching, and refresh using various STS operations. Integrates seamlessly with AWS SDK credential provider chains.
public abstract class StsCredentialsProvider implements AwsCredentialsProvider {
public abstract AwsCredentials resolveCredentials();
public Duration staleTime();
public Duration prefetchTime();
}
public class StsAssumeRoleCredentialsProvider extends StsCredentialsProvider {
public static Builder builder();
}
public class StsAssumeRoleWithWebIdentityCredentialsProvider extends StsCredentialsProvider {
public static Builder builder();
}public interface Credentials {
String accessKeyId();
String secretAccessKey();
String sessionToken();
Instant expiration();
}
public interface AssumedRoleUser {
String assumedRoleId();
String arn();
}
public interface FederatedUser {
String federatedUserId();
String arn();
}
public interface Tag {
String key();
String value();
}public class ExpiredTokenException extends StsException {
// Token has expired
}
public class IdpCommunicationErrorException extends StsException {
// Identity provider communication error
}
public class IdpRejectedClaimException extends StsException {
// Identity provider rejected claim
}
public class InvalidAuthorizationMessageException extends StsException {
// Invalid authorization message
}
public class InvalidIdentityTokenException extends StsException {
// Invalid identity token provided
}
public class MalformedPolicyDocumentException extends StsException {
// Policy document is malformed
}
public class PackedPolicyTooLargeException extends StsException {
// Policy size exceeded limit
}
public class RegionDisabledException extends StsException {
// STS is not activated in the requested region
}