

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

# IAM Identity Center 的基于资源的策略示例
<a name="iam-auth-access-using-resource-based-policies"></a>

每个与 IAM Identity Center 配合使用并使用 [OAuth 2.0](customermanagedapps-saml2-oauth2.md#oidc-concept) 的应用程序都需要基于资源的策略。该应用程序可以由客户管理或 AWS 管理。所需的基于资源的策略称为*应用程序策略*（或[ActorPolicy](https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_IamAuthenticationMethod.html#API_IamAuthenticationMethod_Contents)在 APIs），它定义了哪些 [IAM 委托人](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)有权调用 IAM 身份验证方法 API 操作，例如。[https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html)**IAM 身份验证方法允许 IAM 委托人（例如 IAM 角色或 AWS 服务）通过在 /token? 上出示 IAM 证书来请求或管理访问令牌，从而向 IAM 身份中心 OIDC 服务进行身份验证 aws\$1iam=t 端点**。

应用程序策略管控令牌颁发操作（`CreateTokenWithIAM`）。该政策还管理仅限许可的操作，这些操作仅供 AWS 托管应用程序用于验证令牌 (`IntrospectTokenWithIAM`) 和撤消令牌 ()。`RevokeTokenWithIAM`对于客户自主管理型应用程序，您可以通过指定哪些 IAM 主体有权调用 `CreateTokenWithIAM` 来配置此策略。当授权主体调用此 API 操作时，将获取该应用程序的访问令牌和刷新令牌。

如果您使用 IAM Identity Center 控制台为[可信身份传播](trustedidentitypropagation-overview.md)设置客户托管的应用程序，请参阅[设置客户托管 OAuth 2.0 应用程序](customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.md)中的步骤 4，了解有关如何配置应用程序策略的信息。有关策略示例，请参阅本主题后面的 [示例策略：允许 IAM 角色创建访问令牌和刷新令牌](#oauth-application-policy-example)。

## 政策要求
<a name="oauth-application-policy-requirements"></a>

策略必须满足以下要求：
+ 策略必须包含设置为“2012-10-17”的 `Version ` 元素。
+ 必须包含至少一个 `Statement` 元素。
+ 每个策略 `Statement` 必须包含以下元素：`Effect`、`Principal`、`Action` 和 `Resource`。

## 策略元素
<a name="oauth-application-policy-elements"></a>

该策略必须包含以下元素：

**版本**  
指定策略文档版本。将版本设置为 `2012-10-17`（最新版本）。

**语句**  
包含策略 `Statements`。策略必须包含至少一个 `Statement`。  
每个策略 `Statement` 包含以下元素。    
**效果**  
（必需）确定是允许还是拒绝该策略语句中的权限。有效值为 `Allow` 或 `Deny`。  
**Principal**  
（必需）[主题](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)是获取策略语句中指定的权限的身份。您可以指定 IAM 角色或 AWS 服务主体。  
**Action**  
（必需）允许或拒绝的 IAM Identity Center OIDC 服务 API 操作。有效操作包括：  
+ `sso-oauth:CreateTokenWithIAM`：此操作与 [https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html)API 操作相对应，授予使用任何 IAM 实体（例如 AWS 服务角色或用户）进行身份验证的授权客户端应用程序创建和返回访问和刷新令牌的权限。这些令牌可能包含已定义的作用域，用于指定 `read:profile` 或 `write:data` 等权限。
+ `sso-oauth:IntrospectTokenWithIAM`[仅限权限]：授予验证和检索有关活动 OAuth 2.0 访问令牌和刷新令牌的信息（包括其关联的范围和权限）的权限。此权限仅供 AWS 托管应用程序使用，未记录在 *IAM 身份中心 OIDC API* 参考中。
+ `RevokeTokenWithIAM `[仅限权限]：授予撤销 OAuth 2.0 访问令牌和刷新令牌的权限，使其在正常到期之前失效。此权限仅供 AWS 托管应用程序使用，未记录在 *IAM 身份中心 OIDC API* 参考中。  
**资源**  
（必需）在此策略中 `Resource` 元素的值为 `"*"`，表示“此应用程序”。

有关 AWS 策略语法的更多信息，请参阅 [AWS IAM *用户指南中的 IAM* 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

## 示例策略：允许 IAM 角色创建访问令牌和刷新令牌
<a name="oauth-application-policy-example"></a>

以下权限策略授予工作负载所扮演的 IAM 角色 `ExampleAppClientRole` 创建并返回访问令牌及刷新令牌的权限。

```
 1. {
 2.     "Version": "2012-10-17", 		 	 	  
 3.     "Statement": [
 4.         {
 5.             "Sid": "AllowRoleToCreateTokens",
 6.             "Effect": "Allow",
 7.             "Principal": {
 8.                 "AWS": "arn:aws:iam::111122223333:role/ExampleAppClientRole"
 9.             },
10.             "Action": "sso-oauth:CreateTokenWithIAM",
11.             "Resource": "*"
12.         }
13.     ]
14. }
```