

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

# Enable Amazon 客户托管应用程序的账户访问权限
<a name="enable-account-access-customer-managed-apps"></a>

您可以通过配置可[信令牌颁](https://docs.amazonaws.cn/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html)发者在 IAM Identity Center 中为客户托管的应用程序启用 Amazon 账户访问权限。可信令牌发行者是 OAuth 2.0 授权服务器，它代表经过身份验证的用户颁发签名令牌。IAM Identity Center 将这些令牌交换为证书，允许您的应用程序以编程方式访问分配给这些用户的 Amazon 账户和角色。可信令牌发行者也可用于访问 Amazon 托管应用程序。有关更多信息，请参阅 [通过可信令牌发布者使用应用程序](using-apps-with-trusted-token-issuer.md)。

**注意**  
您只能为 IAM Identity Center 的[组织实例](organization-instances-identity-center.md)启用此功能。只有管理账户管理员或授权管理员才能为客户托管的应用程序启用`sso:account:access`作用域。如果您是成员账户中的应用程序构建者，请联系您的 IAM Identity Center 管理员为您的应用程序启用此范围。

## 工作原理
<a name="enable-account-access-how-it-works"></a>

管理员启用客户托管应用程序的`sso:account:access`作用域后，将出现以下工作流程：

1. 用户通过您的外部身份提供商 (IdP) 登录您的应用程序。

1. 您的应用程序会收到来自 IdP 的签名 JWT 令牌。

1. 您的应用程序通过调用 JWT 持有者授权类型 () `urn:ietf:params:oauth:grant-type:jwt-bearer` 的 `CreateTokenWithIAM` API，将此令牌兑换 IAM 身份中心令牌。此调用需要签名版本 4 (Sigv4) 身份验证。有关更多信息，请参阅 [CreateTokenWithIAM](https://docs.amazonaws.cn/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html)*IAM 身份中心 OIDC API* 参考中的。

1. 您的应用程序使用 IAM Identity Center 令牌调用[门户 API 操作](https://docs.amazonaws.cn/singlesignon/latest/PortalAPIReference/API_Operations.html)（`ListAccounts``ListAccountRoles`、、`GetRoleCredentials`），以发现分配给用户的账户和角色并代表他们检索临时 Amazon 证书。

1. 用户无需任何额外的登录步骤即可通过您的应用程序访问 Amazon 资源。

如果您在设置应用程序时启用了刷新令牌授权，则`CreateTokenWithIAM`还会在访问令牌旁边返回刷新令牌。您的应用程序可以使用此刷新令牌来获取新的访问令牌，而无需重复完整的 JWT Bearer 令牌交换。要刷新访问令牌，请`CreateTokenWithIAM`使用`refresh_token`授权类型调用。

## 先决条件
<a name="enable-account-access-prerequisites"></a>

在为客户管理的应用程序启用账户访问权限之前，您需要：
+ 在 IAM 身份中心配置的支持 JSON 网络令牌 (JWT) 的[客户托管应用程序](https://docs.amazonaws.cn/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html)。应用程序必须具有可以安全存储凭据的后端服务器组件。 Browser-based 此功能不支持诸如单页应用程序 (SPA) 之类的应用程序和其他公共客户端。
+ 附加到您的应用程序[的可信令牌发行者](https://docs.amazonaws.cn/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html)。
+ 访问 IAM Identity Center 的 Amazon Organizations 管理账户或委托管理员账户。成员账户中的应用程序生成器无法直接启用此范围。

## 启用账户访问权限
<a name="enable-account-access-console"></a>

**为客户托管的应用程序启用 `sso: account: acces` s 范围**

1.  Amazon Web Services 管理控制台 使用贵组织的管理账户或委派管理员账户登录。

1. 打开 [IAM Identity Center 控制台](https://console.amazonaws.cn/singlesignon)。

1. 在导航窗格中，选择 **应用程序**。

1. 选择**客户托管**选项卡。

1. 选择要配置的应用程序的名称。

1. 在 “**Amazon 账户访问权限**” 部分，打开 “**启用 Amazon 账户访问权限**”。

启用账户访问权限后，应用程序可以通过编程方式调用 Identity Portal API 操作来列出账户和角色，并检索经过身份验证的用户有权访问的角色的临时 Amazon 证书。

**重要**  
启用应用程序的`sso:account:access`作用域后，该应用程序可以通过分配权限集访问经过身份验证的用户可用的所有账户和角色。您不能将应用程序限制为特定的账户或角色。在启用此功能之前，请确保您了解此访问级别。

## 以编程方式访问
<a name="enable-account-access-programmatic"></a>

您可以使用 `PutApplicationAccessScope` API 以编程方式为客户托管的应用程序启用`sso:account:access`范围。您必须使用组织的管理账户或委派管理员账户调用 API。

**Amazon CLI**

```
aws sso-admin put-application-access-scope \
  --application-arn arn:aws:sso::{{123456789012}}:application/{{ssoins-1234567890abcdef}}/{{apl-1234567890abcdef}} \
  --scope "sso:account:access"
```

**API 请求：**

```
{
  "ApplicationArn": "arn:aws:sso::{{123456789012}}:application/{{ssoins-1234567890abcdef}}/{{apl-1234567890abcdef}}",
  "Scope": "sso:account:access"
}
```

要禁用账户访问权限，请使用具有相同应用程序 ARN 和范围值的 `DeleteApplicationAccessScope` API。

有关更多信息，请参阅 *IAM 身份中心 API 参考[DeleteApplicationAccessScope](https://docs.amazonaws.cn/singlesignon/latest/APIReference/API_DeleteApplicationAccessScope.html)*中的[PutApplicationAccessScope](https://docs.amazonaws.cn/singlesignon/latest/APIReference/API_PutApplicationAccessScope.html)和。

## 安全最佳实践
<a name="enable-account-access-security"></a>
+ `sso:account:access`作用域授予应用程序对经过身份验证的用户可用的所有账户和角色的访问权限。您不能限制对特定账户或角色的访问权限。仅对需要此级别访问权限的应用程序启用此范围。
+ 将 IAM 身份中心访问令牌和刷新令牌保存在您的后端服务器上。切勿将它们暴露给客户端代码。
+ 不要在应用程序日志、错误消息或调试输出中记录令牌或凭据。
+ 不要在 URL 查询参数中传递令牌。使用标`x-amz-sso_bearer_token`头作为访问令牌。
+ [Amazon CloudTrail](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)用于监控您的应用程序发出的 API 调用。

## 相关信息
<a name="enable-account-access-related-info"></a>
+ [客户托管的应用程序](customermanagedapps.md)
+ [通过可信令牌发布者使用应用程序](using-apps-with-trusted-token-issuer.md)
+ [Amazon Web Services 访问门户 API 参考](https://docs.amazonaws.cn/singlesignon/latest/PortalAPIReference/API_Operations.html)