

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

# 使用访问交互式开发工作的凭证 AWS SDK for Java 2.x
<a name="credentials-temporary"></a>

为了提高安全性， AWS 建议您将适用于 Java 的 SDK 配置为[使用临时凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)而不是长期证书。临时凭证由访问密钥（访问密钥 ID 与秘密访问密钥）和会话令牌组成。

您可以通过几种方法来使用临时凭证。您使用的方法以及您向 SDK 提供的配置都取决于您的使用案例。

当您使用 Java SDK 进行交互式开发工作时，我们建议您使用 AWS 控制台登录凭据。

## 使用控制台登录凭证
<a name="using-con-login-creds"></a>

您可以使用现有的 AWS 管理控制台登录凭据以编程方式访问 AWS 服务。在基于浏览器的身份验证流程之后， AWS 生成可在本地开发工具（如 AWS CLI 和 SDK for Java 2.x）上使用的临时证书。

通过此流程，您可以使用在初始账户设置期间创建的根证书、IAM 用户或身份提供商提供的联合身份进行身份验证，然后 AWS CLI 自动为您管理临时证书。这种方法无需在本地存储长期凭证，从而增强了安全性。

运行 `aws login` 命令时，您可以从活动控制台会话中进行选择，也可以通过基于浏览器的身份验证流程登录，这将自动生成临时凭证。适用于 Java 的 SDK 2.x 将在最长 12 小时内自动刷新这些凭证。

**重要**  
除了您在共享配置文件中设置的适用于所有项目的配置外，每个 Java 项目都需要在 Maven `pom.xml` 文件中具有以下依赖关系：  

```
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>signin</artifactId>
</dependency>
```
该`signin`依赖项提供了允许适用于 Java 2.x 的 SDK 访问和使用控制台登录凭据的代码。

有关先决条件、登录和注销的更多信息，请参阅 *AWS SDK 和工具参考*指南中的[使用控制台凭据登录进行 AWS 本地开发](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)。

## Single-sign-on 方法
<a name="single-sign-on-approach"></a>

使用 Java SDK 进行交互式开发工作时，也可以使用单点登录方法。此方法需要以下设置：
+ [通过 IAM Identity Center 设置](get-started-auth.md#setup-auth)
+ [在 AWS 共享配置文件中配置配置文件](get-started-auth.md#setup-credentials) 
+ 使用 AWS CLI 并[运行命令](get-started-auth.md#setup-login-sso)登录并创建活动会话

### IAM Identity Center 配置
<a name="credentials-temporary-idc"></a>

当您将 SDK 配置为使用本指南的[设置概述](setup.md#setup-overview)中所述的 IAM Identity Center 单点登录访问时，SDK 会使用临时凭证。

SDK 使用 IAM Identity Center 访问令牌来访问用您的 `config` 文件中的 `sso_role_name` 设置配置的 IAM 角色。SDK 代入此 IAM 角色并检索用于签署 AWS 服务 请求的临时凭证。

有关软件开发工具包如何从配置中获取临时证书的更多详细信息，请参阅 AWS SDKs 和工具参考指南的[了解 IAM Identity Center 身份验证](https://docs.aws.amazon.com/sdkref/latest/guide/understanding-sso.html)部分。

**重要**  
除了在共享 `config` 文件中设置的适用于所有项目的配置外，每个 Java 项目还需要在 Maven `pom.xml` 文件中具有以下依赖项：  

```
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>sso</artifactId>
</dependency>
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>ssooidc</artifactId>
</dependency>
```
`sso` 和 `ssooidc` 依赖项提供的代码使适用于 Java 的 SDK 2.x 能够访问临时凭证。

### 从 AWS 访问门户中检索临时证书
<a name="credentials-temporary-from-portal"></a>

作为 IAM Identity Center 单点登录配置的替代方案，您可以复制和使用 AWS 访问门户中提供的临时证书。您可以在配置文件中使用临时凭证，也可以将其用作系统属性和环境变量的值。

**为临时凭证设置本地凭证文件**

1. [创建共享 credentials 文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)

1. 在 credentials 文件中，粘贴以下占位符文本，直到粘贴有效的临时凭证为止。

   ```
   [default]
   aws_access_key_id=<value from AWS access portal>
   aws_secret_access_key=<value from AWS access portal>
   aws_session_token=<value from AWS access portal>
   ```

1. 保存该文件。该 `~/.aws/credentials` 文件现在应该存在于您的本地开发系统上。此文件包含 [[默认] 配置文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile)，如果未指定特定的命名配置文件，则适用于 Java 的 SDK 将使用该配置文件。

1. [登录 AWS 访问门户](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosignin.html)

1. 按照[手动刷新凭证](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html#how-to-get-temp-credentials)标题下的说明从 AWS 访问门户复制 IAM 角色证书。

   1. 对于链接的说明中的步骤 2，为可授予访问权限以满足开发需求的 IAM 角色名称选择 `Access keys`。此角色的名称通常类似于**PowerUserAccess**或**开发人员**。

   1. 在模态对话框中，选择您的操作系统，然后从**将配置文件添加到您的 AWS 凭证文件**复制内容。

1. 将复制的凭证粘贴到您的本地 `credentials` 文件中，并移除生成的配置文件名称。您的文件应类似于以下内容。

   ```
   [default]
   aws_access_key_id=AKIAIOSFODNN7EXAMPLE
   aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
   ```

1. 保存 `credentials` 文件。

当适用于 Java 的 SDK 创建服务客户端时，它将访问这些临时凭证并将它们用于每个请求。在步骤 5a 中选择的 IAM 角色的设置决定了[临时凭证的有效时间](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)。最长持续时间为 12 小时。

在临时凭证过期后，重复步骤 4 到 7。