# @aws-cdk/aws-cognito-identitypool-alpha 中文文档

规范地址：https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/

版本：2\.186\.0-alpha\.0
npm 元数据更新时间：2025-03-27T17:47:59.647Z
中文译文更新时间：2026-11-07T12:36:32.299Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws-cdk/aws-cognito-identitypool-alpha
原文对照：https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/?lang=original
项目主页：https://github.com/aws/aws-cdk
源码仓库：https://github.com/aws/aws-cdk

弃用说明：This package has been stabilized and moved to aws-cdk-lib

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：339 kB，16 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.15\.0
- 运行依赖：0 个
- peer 依赖：constructs ^10\.0\.0，aws-cdk-lib ^2\.186\.0
- 首次发布：2022-01-26T12:26:10.860Z
- 最新版本发布：2025-03-27T01:59:33.362Z
- 近 30 天下载量：82521（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：251（近 12 个月 0 个）

## 中文简介

此模块被贬值. 现在,所有建筑都可以在aws-cdk-lib/aws-cognitive-identitypool下使用

## 安装

```sh
npm install @aws-cdk/aws-cognito-identitypool-alpha
```

也可以使用：`pnpm add @aws-cdk/aws-cognito-identitypool-alpha`、`yarn add @aws-cdk/aws-cognito-identitypool-alpha`、`bun add @aws-cdk/aws-cognito-identitypool-alpha`

## README

# 亚马逊 Cognitto 身份池构建库

* * *

![Deprecated](https://img.shields.io/badge/deprecated-critical.svg?style=for-the-badge)

> 此API 可能会发出警告 。 后向兼容性没有保证 .

* * *

所有构造已移入 `aws-cdk-lib/aws-cognito-identitypool`。 。 。 .

> **身份池在一个单独的模块中,而API正在被稳定. 一旦我们稳定了模块,他们会** **包含在马厩中 [记录](https://npmcn.com/package/%40aws-cdk/aws-cognito) 图书馆。 请就这一经验提供反馈意见,具体方式如下:** **创建一个 [这里的问题](https://github.com/aws/aws-cdk/issues/new/choose)**

[亚马逊认知身份池](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) 允许您的用户访问其他 AWS 服务.

身份池是: [亚马逊-科尼奥托](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html),提供认证、授权和 您的网络和移动应用程序的用户管理 。 您的用户可以像用户一样通过信任的身份提供者签名 pool或SAML 2.0服务,以及与Facebook,Amazon,Google或Apple等第三方供应商.

亚马逊科尼奥多的另一个主要组成部分是: [用户池](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)的用户目录 用于应用程序用户的签名选项.

这个模块是 [AWS 云开发套件](https://github.com/aws/aws-cdk) 项目.

```ts
import { IdentityPool, UserPoolAuthenticationProvider } from '@aws-cdk/aws-cognito-identitypool-alpha';
```

## 目录

-   [身份库](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-identity-pools)
    -   [认证和未认证的身份](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-authenticated-and-unauthenticated-identities)
    -   [认证提供者](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-authentication-providers)
        -   [用户池认证提供者](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-user-pool-authentication-provider)
        -   [服务器侧托肯检查](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-server-side-token-check)
        -   [直接参与外部提供者](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-associating-an-external-provider-directly)
        -   [OpenIdConnect 和 萨姆尔](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-openid-connect-and-saml)
        -   [自定义提供者](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-custom-providers)
    -   [角色绘图](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-role-mapping)
        -   [提供方 Uls](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-provider-urls)
    -   [认证流程](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-authentication-flow)
    -   [认知同步](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-cognito-sync)
    -   [导入身份池](https://npmcn.com/package/%40aws-cdk/aws-cognito-identitypool-alpha/#readme-importing-identity-pools)

## 身份库

身份池为作为客人(未经认证)的用户和拥有 通过出示另一个身份提供者的证明书认证。 身份库是用户身份数据的存储库 账户专用.

身份池可以与Cognitto用户池一起使用,也可以通过访问外部联邦身份提供者的方式使用  
直接说 学习更多 [亚马逊认知身份池](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)。 。 。 .

### 认证和未认证的身份

身份集合定义两种身份类型: 认证( E)`user`)和无认证(`guest`) (中文(简体) ). 每一个身份在  
身份资料库要么经过认证,要么未经认证。 每个身份库都有一个默认的角色来认证  
身份,以及未认证身份的默认角色. 在没有其他压倒一切的规则(见下文)的情况下  
由相应的用户在认证过程中承担的角色.

配置最小的基本身份池不需要道具,默认认证(用户)和  
未认证的(贵宾)角色适用于身份集合:

```ts
new IdentityPool(this, 'myIdentityPool');
```

默认情况下,被认证的角色和未经认证的角色都将没有附加权限. 当批准时, 您应当确保您获得最不需要的许可。 许可 利用公众发挥作用 `authenticatedRole` 财务报告和审定财务报表 `unauthenticatedRole` 属性 :

```ts
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';

const identityPool = new IdentityPool(this, 'myIdentityPool');
declare const table: dynamodb.Table;

// Grant permissions to authenticated users
table.grantReadWriteData(identityPool.authenticatedRole);
// Grant permissions to unauthenticated guest users
table.grantReadData(identityPool.unauthenticatedRole);

// Or add policy statements straight to the role
identityPool.authenticatedRole.addToPrincipalPolicy(new iam.PolicyStatement({
  effect: iam.Effect.ALLOW,
  actions: ['dynamodb:UpdateItem'],
  resources: [table.tableArn],
}));
```

默认角色也可以在 `IdentityPoolProps`数字 :

```ts
const stack = new Stack();
const authenticatedRole = new iam.Role(this, 'authRole', {
  assumedBy: new iam.ServicePrincipal('service.amazonaws.com'),
});
const unauthenticatedRole = new iam.Role(this, 'unauthRole', {
  assumedBy: new iam.ServicePrincipal('service.amazonaws.com'),
});
const identityPool = new IdentityPool(this, 'TestIdentityPoolActions', {
  authenticatedRole,
  unauthenticatedRole,
});
```

### 认证提供者

认证身份属于经公共登录提供者认证的用户(Amazon Cognitto用户池,  
登录到亚马逊, 签入苹果, Facebook, Google, SAML, 或任何 OpenID 连接供应商) 或开发商供应商  
(你自己的后端认证程序).

[认证提供者](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) 可以通过先将其与Cognito用户池连接或通过  
将提供者与身份池直接联系起来.

#### 用户池认证提供者

为了将用户池附加到身份池中作为认证提供者,身份池需要属性 从用户池和用户池客户端。 因此,身份集合使用 `UserPoolAuthenticationProvider` 从用户池构造中收集必要的属性.

```ts
const userPool = new cognito.UserPool(this, 'Pool');

new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  authenticationProviders: {
    userPools: [new UserPoolAuthenticationProvider({ userPool })],
  },
});
```

用户池也可以与即时化后的身份池相接. 身份宝库 `addUserPoolAuthentication` 方法  
返回已创建的用户池客户端 :

```ts
declare const identityPool: IdentityPool;
const userPool = new cognito.UserPool(this, 'Pool');
const userPoolClient = identityPool.addUserPoolAuthentication(new UserPoolAuthenticationProvider({
  userPool,
}));
```

#### 服务器侧托肯检查

与 `IdentityPool` CDK Construction 默认情况下, 池的配置将检查集成用户池到  
确保用户在身份池提供OIDC令牌之前没有全球签名或删除,或  
用户的AWS证书.

如果用户被签名或删除, 身份池将返回一个400个非授权错误 。 此设置可以是  
但是,在几个方面,残疾人是残疾人.

设置 `disableServerSideTokenCheck` 将默认行为更改为没有服务器侧式符号检查。 学习  
更多 [这里](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CognitoIdentityProvider.html#CognitoIdentity-Type-CognitoIdentityProvider-ServerSideTokenCheck)数字 :

```ts
declare const identityPool: IdentityPool;
const userPool = new cognito.UserPool(this, 'Pool');
identityPool.addUserPoolAuthentication(new UserPoolAuthenticationProvider({ 
  userPool,
  disableServerSideTokenCheck: true, 
}));
```

#### 直接参与外部提供者

一个或多个 [外部身份提供者](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) 可直接使用身份集合连接  
`authenticationProviders`数字 :

```ts
new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  authenticationProviders: {
    amazon: {
      appId: 'amzn1.application.12312k3j234j13rjiwuenf',
    },
    facebook: {
      appId: '1234567890123',
    },
    google: {
      clientId: '12345678012.apps.googleusercontent.com',
    },
    apple: {
      servicesId: 'com.myappleapp.auth',
    },
    twitter: {
      consumerKey: 'my-twitter-id',
      consumerSecret: 'my-twitter-secret',
    },
  },
});
```

要将多个同类型供应商与身份池关联,请使用用户  
Pools, OpenIdConnect, 或称 SAML. 每个外部服务只能有一个提供者直接附属于身份库.

#### 打开 Id 连接和 Saml

[OpenID 连接](https://docs.aws.amazon.com/cognito/latest/developerguide/open-id.html) 是打开的标准,用于  
由多个登录提供者支持的认证 。 亚马逊·科尼托支持将身份与  
通过配置的 OpenID 连接提供者 [AWS 身份和访问管理](http://aws.amazon.com/iam/)。 。 。 .

支持的身份提供者 [安全标记语言2.0( SAML 2. 0)](https://docs.aws.amazon.com/cognito/latest/developerguide/saml-identity-provider.html) 可用于提供简单的  
用户的入行流程。 SAML 支持身份提供者指定了用户可以承担的 IAM 角色  
这样,不同的用户可以获得不同的权限. 连接 OpenId 连接或 Saml 提供者  
带有身份池:

```ts
declare const openIdConnectProvider: iam.OpenIdConnectProvider;
declare const samlProvider: iam.SamlProvider;

new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  authenticationProviders: {
    openIdConnectProviders: [openIdConnectProvider],
    samlProviders: [samlProvider],
  },
});
```

#### 自定义提供者

使用自定义可以进一步定制身份池的行为 [开发者认证的身份](https://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html)。 。 。 .  
有了开发者认证的身份,用户可以通过现有的认证进行注册和认证  
使用 Amazon Cognitto 来同步用户数据和访问 AWS 资源.

和被支持的外部供应商一样,只有一个自定义供应商可以直接与身份相关  
泳池 游泳池 游泳池.

```ts
declare const openIdConnectProvider: iam.OpenIdConnectProvider;
new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  authenticationProviders: {
    google: {
      clientId: '12345678012.apps.googleusercontent.com',
    },
    openIdConnectProviders: [openIdConnectProvider],
    customProvider: 'my-custom-provider.example.com',
  },
});
```

### 角色绘图

除了为经认证和未经认证的用户设定默认角色外,还可以使用身份集合  
定义规则,通过使用"角色映射"来根据用户ID符中的要求来选择每个用户的角色. 使用时  
角色映射 了解角色需要的一些权限 以及最没有特权的 为您指定特定用途所需的角色。 深处  
审查作用和作用图 [这里](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html)。 。 。 .

使用a [基于符号的方法](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html#using-tokens-to-assign-roles-to-users) 角色映射可以让绘制的角色通过 `cognito:roles` 或者说  
`cognito:preferred_role` 身份提供者的债权:

```ts
import { IdentityPoolProviderUrl } from '@aws-cdk/aws-cognito-identitypool-alpha';

new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  roleMappings: [{
    providerUrl: IdentityPoolProviderUrl.AMAZON,
    useToken: true,
  }],
});
```

使用基于规则的方法绘制角色图,可以根据身份提供者的自定义要求分配角色:

```ts
import { IdentityPoolProviderUrl, RoleMappingMatchType } from '@aws-cdk/aws-cognito-identitypool-alpha';

declare const adminRole: iam.Role;
declare const nonAdminRole: iam.Role;
new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  // Assign specific roles to users based on whether or not the custom admin claim is passed from the identity provider
  roleMappings: [{
    providerUrl: IdentityPoolProviderUrl.AMAZON,
    rules: [
      {
        claim: 'custom:admin',
        claimValue: 'admin',
        mappedRole: adminRole,
      },
      {
        claim: 'custom:admin',
        claimValue: 'admin',
        matchType: RoleMappingMatchType.NOTEQUAL,
        mappedRole: nonAdminRole,
      }
    ],
  }],
});
```

#### 提供方 Uls

角色映射必须与可以提供的身份提供者的url相关 `IdentityPoolProviderUrl`。支持的供应商有静态Urls,可用于:

```ts
import { IdentityPoolProviderUrl } from '@aws-cdk/aws-cognito-identitypool-alpha';

new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  roleMappings: [{
    providerUrl: IdentityPoolProviderUrl.FACEBOOK,
    useToken: true,
  }],
});
```

对于没有静态 Urls 的身份提供者,可以提供自定义 Url :

```ts
import { IdentityPoolProviderUrl } from '@aws-cdk/aws-cognito-identitypool-alpha';

new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  roleMappings: [
    {
      providerUrl: IdentityPoolProviderUrl.custom('my-custom-provider.com'),
      useToken: true,
    },
  ],
});
```

如果一个提供者的 URL 是 CDK Token, 那么如果您正在尝试使用先前定义的 Cognito 用户池, 您也需要提供映射Key . 这是因为默认情况下 Cloudform 角色映射散列中的密钥是提供者Url, Cloudform 映射密钥必须是混凝土字符串, 它们 无法作为参考。 例如:

```ts
import { UserPool, UserPoolClient } from 'aws-cdk-lib/aws-cognito';
import { IdentityPoolProviderUrl } from '@aws-cdk/aws-cognito-identitypool-alpha';

declare const userPool: UserPool;
declare const userPoolClient: UserPoolClient;
new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  roleMappings: [{
    mappingKey: 'cognito',
    providerUrl: IdentityPoolProviderUrl.userPool(userPool, userPoolClient),
    useToken: true,
  }],
});
```

见 [这里](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html#cfn-cognito-identitypoolroleattachment-rolemapping-identityprovider) 更多信息.

### 认证流程

身份库 [认证流程](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html) 默认为增强的简化流量。 经典( 基本) 认证流程  
也可以使用 `allowClassicFlow`数字 :

```ts
new IdentityPool(this, 'myidentitypool', {
  identityPoolName: 'myidentitypool',
  allowClassicFlow: true,
});
```

### 认知同步

现在建议整合 [AWS 应用同步](https://aws.amazon.com/appsync/) 用于在设备之间同步应用数据,所以  
认知同步功能 `PushSync`, (中文(简体) ), `CognitoEvents`,以及 `CognitoStreams` 不属于 `IdentityPool`更多内容  
可找到信息 [这里](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-sync.html)。 。 。 .

### 导入身份池

您可以使用身份池静态方法, 使用身份池 Id 或  
亚恩:

```ts
IdentityPool.fromIdentityPoolId(this, 'my-imported-identity-pool',
  'us-east-1:dj2823ryiwuhef937');
IdentityPool.fromIdentityPoolArn(this, 'my-imported-identity-pool',
  'arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:dj2823ryiwuhef937');
```

## 常见问题

### @aws-cdk/aws-cognito-identitypool-alpha 是什么？

此模块被贬值\. 现在,所有建筑都可以在aws-cdk-lib/aws-cognitive-identitypool下使用注意：该包已被作者标记为弃用——This package has been stabilized and moved to aws-cdk-lib

### 如何安装 @aws-cdk/aws-cognito-identitypool-alpha？

在项目目录运行 npm install @aws-cdk/aws-cognito-identitypool-alpha，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：constructs（^10\.0\.0）、aws-cdk-lib（^2\.186\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aws-cdk/aws-cognito-identitypool-alpha 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aws-cdk/aws-cognito-identitypool-alpha 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @aws-cdk/aws-cognito-identitypool-alpha 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 14\.15\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aws-cdk/aws-cognito-identitypool-alpha 可以商用吗？

@aws-cdk/aws-cognito-identitypool-alpha 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @aws-cdk/aws-cognito-identitypool-alpha 的下载量有多少？

根据 npm 官方下载统计，@aws-cdk/aws-cognito-identitypool-alpha 在 2026/10/07 – 2026/11/05 这 30 天内被下载 82,521 次，日均约 2,751 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aws-cdk/aws-cognito-identitypool-alpha 还在维护吗？

最新版本 2\.186\.0-alpha\.0 发布于 2025/03/27（1\.6 年前）；至今共发布 251 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/01/26。作者已将其标记为弃用，新项目建议寻找替代方案。

