Authenticating with Amazon using the Amazon SDK for Java 2.x
When using the Amazon SDK for Java 2.x, an important thing to know about authentication is that the SDK automatically handles the complex request signing process using credentials from your environment or IAM roles without requiring you to implement any cryptographic algorithms.
The SDK manages credential discovery, signature creation, and credential refreshing completely behind the scenes, letting you focus on your application logic.
Set up for authentication
The Authentication
and access topic in the Amazon SDKs and Tools Reference Guide describes the different authentication
approaches. We recommend that you follow the instructions to set up access
to the IAM Identity Center
After following the instructions in Amazon SDKs and Tools Reference Guide, your system should be set up to allow the SDK to sign requests:
1. Setup for single sign-on access for the SDK
After you complete Step 2 in the programmatic access section so that the SDK can use IAM Identity Center authentication, your system should contain the following elements.
-
The Amazon CLI, which you use to start an Amazon access portal session before you run your application.
-
An
~/.aws/config
file that contains a default profile. The SDK for Java uses the profile's SSO token provider configuration to acquire credentials before sending requests to Amazon Web Services. The sso_role_name
value, which is an IAM role connected to an IAM Identity Center permission set, should allow access to the Amazon Web Services services used in your application.The following sample
config
file shows a default profile set up with SSO token provider configuration. The profile'ssso_session
setting refers to the namedsso-session
section. Thesso-session
section contains settings to initiate an Amazon access portal session.[default] sso_session = my-sso sso_account_id =
111122223333
sso_role_name =SampleRole
region = us-east-1 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url =https://provided-domain.awsapps.com/start
sso_registration_scopes = sso:account:access
For more details about the settings used in the SSO token provider configuration, see SSO token provider configuration in the Amazon SDKs and Tools Reference Guide.
If your development environment is not set up for programmatic access as previously shown, follow Step 2 in the SDKs Reference Guide.
2. Sign in using the Amazon CLI
Before running an application that accesses Amazon Web Services services, you need an active Amazon access portal session in order for the SDK to use IAM Identity Center authentication to resolve credentials. Run the following command in the Amazon CLI to sign in to the Amazon access portal.
aws sso login
Since you have a default profile setup, you do not need to call the command with a
--profile
option. If your SSO token provider configuration is using a
named profile, the command is aws sso login --profile
.named-profile
To test if you already have an active session, run the following Amazon CLI command.
aws sts get-caller-identity
The response to this command should report the IAM Identity Center account and permission set
configured in the shared config
file.
Note
If you already have an active Amazon access portal session and run aws sso
login
, you will not be required to provide credentials.
However, you will see a dialog that requests permission for
botocore
to access your information. botocore
is
the foundation for the Amazon CLI .
Select Allow to authorize access to your information for the Amazon CLI and SDK for Java.
Additional authentication options
For more options on authentication for the SDK, such as the use of profiles and
environment variables, see the configuration