

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS 使用进行身份验证 AWS SDK for Java 2.x
<a name="get-started-auth"></a>

 当你使用 AWS 服务 AWS SDK for Java 2.x 进行开发 AWS 时，你必须确定如何进行身份验证。SDK 完全在幕后管理凭证发现、签名创建和凭证刷新，让您可以专注于应用程序逻辑。

## 身份验证的设置
<a name="setup-auth"></a>

《[和工具参考指南》中的身份验证 AWS SDKs 和访问](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)主题描述了不同的身份验证方法。

对于本地开发，推荐的方法是使用您的控制台登录凭证登录 AWS CLI，从而使用短期证书。如果您使用根、IAM 用户或与 IAM 的联合身份验证进行 AWS 账户访问，则建议您这样做。按照 [使用访问交互式开发工作的凭证 AWS SDK for Java 2.x](credentials-temporary.md) 中的说明进行操作。

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

### 1. 使用短期证书进行本地开发
<a name="setup-login"></a>

对于本地开发，推荐的方法是使用您的控制台登录凭证登录 AWS CLI，从而使用短期证书。如果您使用根、IAM 用户或与 IAM 的联合身份验证进行 AWS 账户访问，则建议您这样做。

有关说明，请参阅[中的使用凭证提供程序 AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials-temporary.html)。

### 2. 设置用于 SDK 的单点登录访问
<a name="setup-credentials"></a>

在完成[编程访问部分](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html#idcGettingStarted)的步骤 2 以使 SDK 使用 IAM Identity Center 身份验证后，您的系统应包含以下元素。
+  AWS CLI，用于在运行应用程序之前启动[AWS 访问门户会话](#setup-login-sso)。
+ 包含[默认配置文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile)的 `~/.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 和工具参考指南中的 [SSO 令牌提供者配置](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#sso-token-config)。

如果您的开发环境未如前所示进行编程访问设置，请按照[《 SDKs 参考指南》中的步骤 2](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html#idcGettingStarted) 进行操作。

### 3. 使用登录 AWS CLI
<a name="setup-login-sso"></a>

在运行可访问的应用程序之前 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。

## 其他身份验证选项
<a name="setup-additional"></a>

有关 SDK 身份验证的更多选项，例如配置文件和环境变量的使用，请参阅 AWS SDKs 和工具参考指南中的[配置](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)章节。