

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

# 创建 Amazon 认证权限 Amazon Cognito 身份源
<a name="cognito-create"></a>

以下过程将身份源添加到现有策略存储中。

在已验证权限控制台中[创建新的策略存储](policy-stores-create.md)时，您也可以创建身份源。在此过程中，您可以自动将身份源令牌中的声明导入实体属性中。选择引**导式设置****或设置方式 API Gateway 和身份提供者**选项。这些选项还会创建初始策略。

**注意**  
在您创建策略存储之前，左侧的导航窗格中不会显示**身份来源**。您创建的身份来源与当前的策略存储相关联。

使用 Amazon CLI 或[CreateIdentitySource](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_CreateIdentitySource.html)在已验证权限 API [create-identity-source](https://docs.amazonaws.cn/cli/latest/reference/verifiedpermissions/create-identity-source.html)中创建身份源时，可以省略委托人实体类型。但是，空白实体类型会创建实体类型为的身份源`Amazon::Cognito`。此实体名称与策略存储架构不兼容。要将 Amazon Cognito 身份与策略存储架构集成，必须将委托人实体类型设置为支持的策略存储实体。

------
#### [ Amazon Web Services 管理控制台 ]

**要创建 Amazon Cognito 用户群体身份来源，请按以下步骤操作：**

1. 打开已[验证权限控制台](https://console.amazonaws.cn/verifiedpermissions/)。选择您的保单商店。

1. 在左侧的导航窗格中，选择**身份来源**。

1. 选择**创建身份来源**。

1. 在 **Cognito 用户池详细信息**中，选择 Amazon Web Services 区域 并输入您的身份源的**用户池 ID**。

1. 在**承担者配置**中，对于 “**委托人类型**”，为来自该来源的委托人选择实体类型。连接的 Amazon Cognito 用户群体中的身份将映射到所选的主体类型。

1. 如果要映射用户池`cognito:groups`声明，请在 “**群**组配置**” 中选择 “使用 Cognito 群组**”。选择作为主体类型的父项的实体类型。

1. 在**客户端应用程序验证**中，选择是否验证客户端应用程序 IDs。
   + 要验证客户端应用程序 IDs，请选择 “**仅接受具有匹配客户端应用程序的令牌**” IDs。为每个要验证的客户端应用程序 ID 选择**添加新客户端应用程序 ID**。要删除已添加的客户端应用程序 ID，请选择该客户端应用程序 ID 旁边的**删除**。
   +  IDs如果您**不想验证客户端应用程序**，请选择不验证客户端应用程序 IDs。

1. 选择**创建身份来源**。

1. （可选）如果您的策略存储具有架构，则必须先更新架构，让 Cedar 知道您的身份源创建的主体类型，然后才能引用从 Cedar 策略中的身份或访问令牌中提取的属性。架构中的新增内容必须包含您要在 Cedar 策略中引用的属性。有关将 Amazon Cognito 令牌属性映射到 Cedar 主体属性的更多信息，请参阅[将 Amazon Cognito 令牌映射到架构](cognito-map-token-to-schema.md)。
**注意**  
当您创建**与 [API 关联的策略存储或在创建策略存储](policy-stores-api-userpool.md)时使用设置 API Gateway 和身份提供商**时，Verified Permissions 会查询您的用户池以获取用户属性，并创建一个架构，其中您的委托人类型将填充用户池属性。

1. 创建使用令牌中的信息做出授权决策的策略。有关更多信息，请参阅 [创建 Amazon Verified Permissions 静态策略](policies-create.md)。

现在，您已经创建了身份源、更新了架构并创建了策略，请使用已验证的权限`IsAuthorizedWithToken`来做出授权决定。有关更多信息，请参阅 [IsAuthorizedWithToken](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html)*Amazon 已验证权限 API 参考指南*。

------
#### [ Amazon CLI ]

**要创建 Amazon Cognito 用户群体身份来源，请按以下步骤操作：**  
您可以使用[CreateIdentitySource](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_CreateIdentitySource.html)操作创建身份源。以下示例创建了一个可以从 Amazon Cognito 用户池中访问经过身份验证的身份的身份源。

1. 创建一个包含以下 Amazon Cognito 用户池详细信息的`config.txt`文件，供`create-identity-source`命令中的`--configuration`参数使用。

   ```
   {
       "cognitoUserPoolConfiguration": {
           "userPoolArn": "arn:aws:cognito-idp:us-west-2:123456789012:userpool/us-west-2_1a2b3c4d5",
           "clientIds":["a1b2c3d4e5f6g7h8i9j0kalbmc"],
           "groupConfiguration": {
                 "groupEntityType": "MyCorp::UserGroup"
           }
       }
   }
   ```

1. 运行以下命令创建 Amazon Cognito 身份源。

   ```
   $ aws verifiedpermissions create-identity-source \
       --configuration file://config.txt \
       --principal-entity-type "User" \
       --policy-store-id 123456789012
   {
       "createdDate": "2023-05-19T20:30:28.214829+00:00",
       "identitySourceId": "ISEXAMPLEabcdefg111111",
       "lastUpdatedDate": "2023-05-19T20:30:28.214829+00:00",
       "policyStoreId": "PSEXAMPLEabcdefg111111"
   }
   ```

1. （可选）如果您的策略存储具有架构，则必须先更新架构，让 Cedar 知道您的身份源创建的主体类型，然后才能引用从 Cedar 策略中的身份或访问令牌中提取的属性。架构中的新增内容必须包含您要在 Cedar 策略中引用的属性。有关将 Amazon Cognito 令牌属性映射到 Cedar 主体属性的更多信息，请参阅[将 Amazon Cognito 令牌映射到架构](cognito-map-token-to-schema.md)。
**注意**  
当您创建**与 [API 关联的策略存储或在创建策略存储](policy-stores-api-userpool.md)时使用设置 API Gateway 和身份提供商**时，Verified Permissions 会查询您的用户池以获取用户属性，并创建一个架构，其中您的委托人类型将填充用户池属性。

1. 创建使用令牌中的信息做出授权决策的策略。有关更多信息，请参阅 [创建 Amazon Verified Permissions 静态策略](policies-create.md)。

现在，您已经创建了身份源、更新了架构并创建了策略，请使用已验证的权限`IsAuthorizedWithToken`来做出授权决定。有关更多信息，请参阅 [IsAuthorizedWithToken](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html)*Amazon 已验证权限 API 参考指南*。

------

有关在 Verified Permissions 中为经过身份验证的用户使用 Amazon Cognito 访问令牌和身份令牌的更多信息，请参阅《Amazon Cognito 开发人员指南》中的[使用 Amazon Verified Permissions 进行授权](https://docs.amazonaws.cn/cognito/latest/developerguide/amazon-cognito-authorization-with-avp.html)。**