本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS 使用进行身份验证 AWS SDK for Java 2.x
当你使用 AWS 服务 AWS SDK for Java 2.x 进行开发 AWS 时,你必须确定如何进行身份验证。SDK 完全在幕后管理凭证发现、签名创建和凭证刷新,让您可以专注于应用程序逻辑。
身份验证的设置
《和工具参考指南》中的身份验证 AWS SDKs 和访问主题描述了不同的身份验证方法。
对于本地开发,推荐的方法是使用您的控制台登录凭证登录 AWS CLI,从而使用短期证书。如果您使用根、IAM 用户或与 IAM 的联合身份验证进行 AWS 账户访问,则建议您这样做。按照 使用 AWS SDK for Java 2.x访问交互式开发工作的凭证 中的说明进行操作。
按照 AWS SDKs 和《工具参考指南》中的说明进行操作后,您的系统应设置为允许 SDK 对请求进行签名:
1. 使用短期证书进行本地开发
对于本地开发,推荐的方法是使用您的控制台登录凭证登录 AWS CLI,从而使用短期证书。如果您使用根、IAM 用户或与 IAM 的联合身份验证进行 AWS 账户访问,则建议您这样做。
有关说明,请参阅中的使用凭证提供程序 AWS SDK for Java 2.x。
2. 设置用于 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 =111122223333sso_role_name =SampleRoleregion = us-east-1 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url =https://provided-domain.awsapps.com/startsso_registration_scopes = sso:account:access
有关 SSO 令牌提供程序配置中使用的设置的更多详细信息,请参阅 AWS SDKs 和工具参考指南中的 SSO 令牌提供者配置。
如果您的开发环境未如前所示进行编程访问设置,请按照《 SDKs 参考指南》中的步骤 2 进行操作。
3. 使用登录 AWS CLI
在运行可访问的应用程序之前 AWS 服务,您需要进行有效的 AWS 访问门户会话,这样 SDK 才能使用 IAM Identity Center 身份验证来解析证书。在中运行以下命令登录 AWS CLI AWS 访问门户。
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 和工具参考指南中的配置章节。