

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

# IAM Identity Center 凭证提供者
<a name="feature-sso-credentials"></a>

**注意**  
如需了解设置页面布局或解释后面的 Support b **y AWS SDKs 和 tools** 表格的帮助，请参阅[了解本指南的设置页面](settings-reference.md#settingsPages)。

此身份验证机制 AWS IAM Identity Center 用于获取您的代码的单点登录 (SSO) 访问 AWS 服务 权限。

**注意**  
在 AWS SDK API 文档中，IAM 身份中心凭证提供商被称为 SSO 凭证提供商。

启用 IAM Identity Center 后，您可以在共享 AWS `config`文件中为其设置定义配置文件。此配置文件用于连接到 IAM Identity Center 访问门户。当用户成功通过 IAM Identity Center 进行身份验证后，门户将返回与该用户关联的 IAM 角色的短期凭证。要了解 SDK 如何从配置中获取临时证书并将其用于 AWS 服务 请求，请参阅[如何解决 AWS SDKs 和工具的 IAM 身份中心身份验证问题](understanding-sso.md)。

通过 `config` 文件配置 IAM Identity Center 有两种方式：
+ **（推荐）SSO 令牌提供者配置**：延长会话时长。包括对自定义会话时长的支持。
+ **旧版不可刷新配置**：使用固定的八小时会话。

在这两种配置中，您都需要在会话到期后重新登录。

以下两份指南包含有关 IAM Identity Center 的其他信息：
+ [AWS IAM Identity Center 用户指南](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
+ [AWS IAM Identity Center 门户 API 参考](https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/Welcome.html)

要深入了解 SDKs 和工具如何使用和使用此配置刷新凭据，请参阅[如何解决 AWS SDKs 和工具的 IAM 身份中心身份验证问题](understanding-sso.md)。

## 先决条件
<a name="feature-sso-credentials-prereq"></a>

您必须先启用 IAM Identity Center。有关启用 IAM Identity Center 身份验证的详细信息，请参阅《AWS IAM Identity Center 用户指南》 中的 [Enabling AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html)**。

**注意**  
有关本页详细介绍的完整先决条件**和**所需的共享 `config` 文件配置，请参阅有关设置[使用 IAM 身份中心对 AWS SDK 和工具进行身份验证](access-sso.md)的指导说明。

## SSO 令牌提供商配置
<a name="sso-token-config"></a>

当您使用 SSO 令牌提供程序配置时，您的 AWS SDK 或工具会自动刷新您的会话，直到延长的会话时段为止。有关会话持续时间和最长持续时间的更多信息，请参阅*AWS IAM Identity Center 用户指南*中的[配置 AWS 访问门户和 IAM Identity Center 集成应用程序的会话持续](https://docs.aws.amazon.com/singlesignon/latest/userguide/configure-user-session.html)时间。

该`config`文件的`sso-session`部分用于对用于获取 SSO 访问令牌的配置变量进行分组，然后可以使用这些变量来获取 AWS 凭证。有关 `config` 文件中此节的更多详细信息，请参阅 [配置文件的格式](file-format.md#file-format-config)。

以下共享 `config` 文件示例使用 `dev` 配置文件将 SDK 或工具配置为请求 IAM Identity Center 凭证。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

上面的示例展示您可以定义 `sso-session` 节并将其关联到某个配置文件。通常，`sso_role_name`必须在`profile`部分中设置`sso_account_id`和，这样 SDK 才能请求 AWS 凭证。 `sso_region``sso_start_url`、和，`sso_registration_scopes`必须在该`sso-session`部分中设置。

并不是所有 SSO 令牌配置场景都需要 `sso_account_id` 和 `sso_role_name`。如果您的应用程序仅使用支持持 AWS 服务 有者身份验证的凭证，则不需要传统 AWS 凭证。持有者身份验证是一种 HTTP 身份验证方案，它使用称为持有者令牌的安全令牌。在这种情况下，不需要 `sso_account_id` 和 `sso_role_name`。要确定该服务是否支持不记名令牌授权，请参阅个人 AWS 服务 指南。

注册范围配置为 `sso-session` 的一部分。范围是 OAuth 2.0 中的一种机制，用于限制应用程序对用户账户的申请访问。上例设置了 `sso_registration_scopes`，来提供列出账户和角色的必要访问权限。

下例展示了如何在多个配置文件中重复使用相同的 `sso-session` 配置。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

身份验证令牌缓存到 `~/.aws/sso/cache` 目录下的磁盘上，文件名基于会话名称。

## 遗留的不可刷新配置
<a name="sso-legacy"></a>

使用遗留的不可刷新配置不支持自动令牌刷新。我们建议改用 [SSO 令牌提供商配置](#sso-token-config)。

要使用传统的不可刷新配置，您必须在配置文件中指定以下设置：
+ `sso_start_url`
+ `sso_region`
+ `sso_account_id`
+ `sso_role_name`

可以使用 `sso_start_url` 和 `sso_region` 设置为配置文件指定用户门户。可以使用 `sso_account_id` 和 `sso_role_name` 设置来指定权限。

以下示例设置了 `config` 文件中的四个必需值。

```
[profile my-sso-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-west-2
sso_account_id = 111122223333
sso_role_name = SSOReadOnlyRole
```

身份验证令牌缓存到 `~/.aws/sso/cache` 目录下的磁盘上，文件名基于 `sso_start_url`。

## IAM Identity Center 凭证提供者设置
<a name="feature-sso-credentials-profile"></a>

使用以下方法配置此功能：

**`sso_start_url`-共享 AWS `config`文件设置**  
指向您所在组织的 IAM Identity Center 颁发者 URL 或访问门户 URL 的 URL。有关详细信息，请参阅《AWS IAM Identity Center 用户指南》中的 [Using the AWS access portal](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-the-portal.html)**。  
 要找到此值，请打开 [IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)，查看**控制面板**，然后找到 **AWS 访问门户 URL**。  
+ 或者，从的 **2.22.0** 版本开始 AWS CLI，您可以改用**AWS 发行**者 URL 的值。

**`sso_region`-共享 AWS `config`文件设置**  
其中 AWS 区域 包含您的 IAM 身份中心门户主机；也就是您在启用 IAM 身份中心之前选择的区域。这与您的默认 AWS 区域无关，也可能有所不同。  
有关 AWS 区域 及其代码的完整列表，请参阅中的[区域终端节点*Amazon Web Services 一般参考*](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)。要查找此值，请打开 [IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)，查看控制 **面板**，然后查找 **区域**。

**`sso_account_id`-共享 AWS `config`文件设置**  
通过 AWS Organizations 服务添加 AWS 账户 的用于身份验证的数字 ID。  
要查看可用账户列表，请前往 [IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)并打开 **AWS 账户**页面。您还可以在*AWS IAM Identity Center 门户 API 参考*中使用 [ListAccounts](https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_ListAccounts.html)API 方法查看可用账户列表。例如，您可以调用 “[列表](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sso/list-accounts.html)账户” AWS CLI 方法。

**`sso_role_name`-共享 AWS `config`文件设置**  
以 IAM 角色配置的权限集的名称，用于定义用户生成的权限。角色必须存在于 AWS 账户 指定的中`sso_account_id`。使用角色名称，而不是角色的 Amazon 资源名称（ARN）。  
权限集附有 IAM policy 和自定义权限策略，并定义了用户对其分配的 AWS 账户的访问权限级别。  
要查看每个可用权限集的列表 AWS 账户，请转到 [IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)并打开**AWS 账户**页面。选择 AWS 账户 表格中列出的正确权限集名称。您还可以使用 Port *AWS IAM Identity Center al API 参考*中的 [ListAccountRoles](https://docs.aws.amazon.com/singlesignon/latest/PortalAPIReference/API_ListAccountRoles.html)API 方法查看可用权限集列表。例如，您可以调用 AWS CLI 方法[list-account-roles](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sso/list-account-roles.html)。

**`sso_registration_scopes`-共享 AWS `config`文件设置**  
要为 `sso-session` 授权的范围的逗号分隔列表。应用程序可以请求一个或多个范围，向应用程序签发的访问令牌将仅限于授予的范围。要从 IAM Identity Center 服务中取回刷新后的令牌，必须赋予 `sso:account:access` 最小范围。有关可用访问范围选项的列表，请参阅《AWS IAM Identity Center 用户指南》中的 [Access scopes](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)**。  
这些范围定义了为已注册的 OIDC 客户端请求授权的权限和客户端检索的访问令牌。范围授权对 IAM Identity Center 持有者令牌授权端点的访问。  
此设置不适用于遗留的不可刷新配置。使用传统配置发布的令牌被隐式限制在 `sso:account:access` 作用域范围内。

## Support AWS SDKs by 和工具
<a name="feature-sso-credentials-sdk-compat"></a>

以下内容 SDKs 支持本主题中描述的功能和设置。所有部分例外情况均已注明。 适用于 Java 的 AWS SDK 和 适用于 Kotlin 的 AWS SDK 唯一支持任何 JVM 系统属性设置。


| SDK | 支持 | 备注或更多信息 | 
| --- | --- | --- | 
| [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) v2 | 是 |  | 
| [适用于 C\$1\$1 的 SDK](https://docs.aws.amazon.com/sdk-for-cpp/latest/developer-guide/) | 是 |  | 
| [适用于 Go V2 (1.x) 的 SDK](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/) | 是 |  | 
| [适用于 Go 1.x（V1）的 SDK](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/) | 是 | 要使用共享 config 文件设置，必须开启从配置文件加载的功能；请参阅[会话](https://docs.aws.amazon.com/sdk-for-go/api/aws/session/)。 | 
| [适用于 Java 2.x 的 SDK](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) | 是 | credentials 文件中也支持配置值。 | 
| [适用于 Java 1.x 的 SDK](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/) | 否 |  | 
| [适用于 JavaScript 3.x 的软件开发工具包](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/) | 是 |  | 
| [适用于 JavaScript 2.x 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/) | 是 |  | 
| [适用于 Kotlin 的 SDK](https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/) | 是 |  | 
| [适用于.NET 4.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/) | 是 |  | 
| [适用于 .NET 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/) | 是 |  | 
| [适用于 PHP 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/) | 是 |  | 
| [适用于 Python (Boto3) 的 SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) | 是 |  | 
| [适用于 Ruby 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/) | 是 |  | 
| [适用于 Rust 的 SDK](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) | 部分 | 仅限遗留的不可刷新配置。 | 
| [适用于 Swift 的 SDK](https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/) | 是 |  | 
| [适用于 PowerShell V5 的工具](https://docs.aws.amazon.com/powershell/latest/userguide/) | 是 |  | 
| [适用于 PowerShell V4 的工具](https://docs.aws.amazon.com/powershell/v4/userguide/) | 是 |  | 