使用AWS SDK for Java 2.x 向 AWS 进行身份验证 - AWS SDK for Java 2.x

使用AWS SDK for Java 2.x 向 AWS 进行身份验证

使用AWS SDK for Java 2.x 时,关于身份验证需要了解的一件重要事情是,SDK 会自动使用您环境中的凭证或 IAM 角色来处理复杂的请求签名过程,而无需您自己实施任何加密算法。

SDK 完全在幕后管理凭证发现、签名创建和凭证刷新,让您可以专注于应用程序逻辑。

身份验证的设置

《AWS SDK 和工具参考指南》中的身份验证和访问主题描述了不同的身份验证方法。我们建议您按照说明设置对 IAM Identity Center 的访问权限,以便 SDK 可以获取凭证。

按照《AWS SDK 和工具参考指南》中的说明操作后,您的系统应已设置为允许 SDK 对请求进行签名:

1. 设置用于 SDK 的单点登录访问

在完成编程访问部分的步骤 2 以使 SDK 使用 IAM Identity Center 身份验证后,您的系统应包含以下元素。

  • AWS CLI,您可用于在运行应用程序之前启动 AWS 访问门户会话

  • 包含默认配置文件~/.aws/config 文件。在向 AWS 发送请求之前,适用于 Java 的 SDK 使用配置文件的 SSO 令牌提供程序配置来获取凭证。sso_role_name 值是与 IAM Identity Center 权限集关联的 IAM 角色,应允许访问您的应用程序中使用的 AWS 服务。

    以下示例 config 文件展示了使用 SSO 令牌提供程序配置来设置的默认配置文件。配置文件的 sso_session 设置是指所指定的 sso-session 节。sso-session 节包含启动 AWS 访问门户会话的设置。

    [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

有关 SSO 令牌提供程序配置中使用的设置的更多详细信息,请参阅《AWS SDKs and Tools Reference Guide》中的 SSO token provider configuration

如果您的开发环境未如前所示进行编程访问设置,请按照《SDK 参考指南》中的步骤 2 进行操作。

2. 使用 AWS CLI 登录

在运行访问 AWS 服务 的应用程序之前,需要有活动的 AWS 访问门户会话,以便 SDK 使用 IAM Identity Center 身份验证来解析凭证。要登录 AWS 访问门户,请在 AWS CLI 中运行以下命令。

aws sso login

由于您有默认的配置文件设置,因此无需使用 --profile 选项调用该命令。如果您的 SSO 令牌提供程序配置在使用指定的配置文件,则命令为 aws sso login --profile named-profile

要测试您是否已有活动会话,请运行以下 AWS CLI 命令。

aws sts get-caller-identity

对此命令的响应应该报告共享 config 文件中配置的 IAM Identity Center 账户和权限集。

注意

如果您已经有一个有效的 AWS 访问门户会话并且运行了 aws sso login,则无需提供凭证。

但是,您将看到一个对话框,请求 botocore 访问您的信息的权限。botocore 是 AWS CLI 的基础。

选择允许以授予 AWS CLI 以及适用于 Java 的 SDK 访问您的信息的权限。

其他身份验证选项

有关适用于 SDK 的更多身份验证选项,例如使用配置文件和环境变量,请参阅《AWS SDKs and Tools Reference Guide》中的 configuration 章节。