# @aws-cdk/aws-apigatewayv2-authorizers-alpha 中文文档

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

版本：2\.114\.1-alpha\.0
npm 元数据更新时间：2023-12-06T13:59:21.636Z
中文译文更新时间：2026-11-07T12:31:36.871Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：247 kB，28 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.15\.0
- 运行依赖：0 个
- peer 依赖：@aws-cdk/aws-apigatewayv2-alpha 2\.114\.1-alpha\.0，aws-cdk-lib ^2\.114\.1，constructs ^10\.0\.0
- 首次发布：2021-10-13T18:38:58.140Z
- 最新版本发布：2023-12-06T13:59:21.432Z
- 近 30 天下载量：86271（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：169（近 12 个月 0 个）

## 中文简介

此模块被贬值. 所有建筑现在都可以在aws-cdk-lib/aws-apigatewayv2授权器下使用

## 安装

```sh
npm install @aws-cdk/aws-apigatewayv2-authorizers-alpha
```

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

## README

# AWS APIGatewayv2 授权器

* * *

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

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

* * *

所有构造移到 aws- cdk-lib/aws- apigatewayv2 授权器 .

## 目录

-   [导言](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-introduction)
-   [HTTP API 软件](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-http-apis)
    -   [默认授权](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-default-authorization)
    -   [路由授权](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-route-authorization)
    -   [JWT 授权者](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-jwt-authorizers)
        -   [用户池授权器](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-user-pool-authorizer)
    -   [Lambda 授权者](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-lambda-authorizers)
    -   [IAM 授权者](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-iam-authorizers)
-   [网络锁定 APIs](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-websocket-apis)
    -   [Lambda 授权者](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-lambda-authorizer)
    -   [IAM 授权者](https://npmcn.com/package/%40aws-cdk/aws-apigatewayv2-authorizers-alpha/#readme-iam-authorizer)

## 导言

API Gateway 支持控制和管理您 HTTP API 访问的多机制. 他们主要是 分为Lambda授权者,JWT授权者,以及标准的AWS IAM角色和政策. 更多信息为: 可用时间 [控制和管理对 HTTP 的访问 API 密码](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-access-control.html)。 。 。 .

## HTTP API 软件

HTTP API的接入控制是通过限制哪些路由可以被引用来管理.

授权器和范围可以适用于API,也可以具体适用于每个路由.

### 默认授权

在使用默认的授权时,API的所有路由都会继承配置.

在下文的例子中,所有路线都要求 `manage:books` (a) 为援引合并而存在的范围.

```ts
import { HttpJwtAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';

const issuer = 'https://test.us.auth0.com';
const authorizer = new HttpJwtAuthorizer('DefaultAuthorizer', issuer, {
  jwtAudience: ['3131231'],
});

const api = new apigwv2.HttpApi(this, 'HttpApi', {
  defaultAuthorizer: authorizer,
  defaultAuthorizationScopes: ['manage:books'],
});
```

### 路由授权

也可以为每个路由配置授权. 在配置路由授权时,它优先于默认授权.

下面的例子展示了默认的授权,以及路由的授权. 它还展示了如何完全取消对一条路线的授权.

-   `GET /books` 财务报告和审定财务报表 `GET /books/{id}` 使用 api 上的默认授权设置
-   `POST /books` 将要求 `['write:books']` 范围
-   `POST /login` 删除默认授权者( 未认证的路由)

```ts
import { HttpJwtAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { HttpUrlIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

const issuer = 'https://test.us.auth0.com';
const authorizer = new HttpJwtAuthorizer('DefaultAuthorizer', issuer, {
  jwtAudience: ['3131231'],
});

const api = new apigwv2.HttpApi(this, 'HttpApi', {
  defaultAuthorizer: authorizer,
  defaultAuthorizationScopes: ['read:books'],
});

api.addRoutes({
  integration: new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.example.com'),
  path: '/books',
  methods: [apigwv2.HttpMethod.GET],
});

api.addRoutes({
  integration: new HttpUrlIntegration('BooksIdIntegration', 'https://get-books-proxy.example.com'),
  path: '/books/{id}',
  methods: [apigwv2.HttpMethod.GET],
});

api.addRoutes({
  integration: new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.example.com'),
  path: '/books',
  methods: [apigwv2.HttpMethod.POST],
  authorizationScopes: ['write:books']
});

api.addRoutes({
  integration: new HttpUrlIntegration('LoginIntegration', 'https://get-books-proxy.example.com'),
  path: '/login',
  methods: [apigwv2.HttpMethod.POST],
  authorizer: new apigwv2.HttpNoneAuthorizer(),
});
```

### JWT 授权者

JWT授权人允许使用JSON Web Tokens(JWTs)作为以下内容的一部分: [OpenID 连接](https://openid.net/specs/openid-connect-core-1_0.html) 财务报告和审定财务报表 [OAuth 2.0 数据](https://oauth.net/2/) 用于允许和限制客户端访问 HTTP API 的框架.

配置时,API Gateway验证客户端提交的JWT,并根据其内容允许或拒绝访问.

符号的位置由 `identitySource` 默认为 HTTP `Authorization` 头曰. 不过,它也 [支持若干其他选项](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html#http-api-lambda-authorizer.identity-sources)。 。 。 . 然后根据授权人和路线(范围)中定义的选项,对JWT进行解码并验证签名和索赔. 更多信息请检查 [JWT 授权文件](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)。 。 。 .

未获得授权的客户可收到2个答复:

-   `401 - Unauthorized` 当JWT验证失败时
-   `403 - Forbidden` - 当JWT验证成功但所需范围未达到时

```ts
import { HttpJwtAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { HttpUrlIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

const issuer = 'https://test.us.auth0.com';
const authorizer = new HttpJwtAuthorizer('BooksAuthorizer', issuer, {
  jwtAudience: ['3131231'],
});

const api = new apigwv2.HttpApi(this, 'HttpApi');

api.addRoutes({
  integration: new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.example.com'),
  path: '/books',
  authorizer,
});
```

#### 用户池授权器

用户池授权器(User Pool Authorizer)是JWT授权器的一种,使用Cognitto用户池和app客户端来控制谁可以访问你的API. 在应用程序客户端成功授权后,所生成的访问符将被用作JWT.

客户端访问使用用户池授权的API,必须先在用户池签名并获得身份或访问令牌. 然后他们必须在指定的 `identitySource` aPI电话 更多信息,请访问 [使用 Amazon Cognitto 用户 作为授权方的集合](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html)。 。 。 .

```ts
import * as cognito from 'aws-cdk-lib/aws-cognito';
import { HttpUserPoolAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { HttpUrlIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

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

const authorizer = new HttpUserPoolAuthorizer('BooksAuthorizer', userPool);

const api = new apigwv2.HttpApi(this, 'HttpApi');

api.addRoutes({
  integration: new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.example.com'),
  path: '/books',
  authorizer,
});
```

### Lambda 授权者

Lambda授权方使用Lambda函数来控制对您HTTP API的访问. 当客户端调用您的 API 时, API Gateway 引用了您的 Lambda 函数并使用响应来确定客户端是否可以访问您的 API .

Lambda授权者视其反应而定,属于两种类型――简单型或IAM型。 你可以学会不同 [这里](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html#http-api-lambda-authorizer.payload-format-response)。 。 。 .

```ts
import { HttpLambdaAuthorizer, HttpLambdaResponseType } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { HttpUrlIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

// This function handles your auth logic
declare const authHandler: lambda.Function;

const authorizer = new HttpLambdaAuthorizer('BooksAuthorizer', authHandler, {
  responseTypes: [HttpLambdaResponseType.SIMPLE], // Define if returns simple and/or iam response
});

const api = new apigwv2.HttpApi(this, 'HttpApi');

api.addRoutes({
  integration: new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.example.com'),
  path: '/books',
  authorizer,
});
```

### IAM 授权者

API 网关通过包含的内容支持 IAM `HttpIamAuthorizer` 和赠款语法:

```ts
import { HttpIamAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { HttpUrlIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

declare const principal: iam.AnyPrincipal;

const authorizer = new HttpIamAuthorizer();

const httpApi = new apigwv2.HttpApi(this, 'HttpApi', {
  defaultAuthorizer: authorizer,
});

const routes = httpApi.addRoutes({
  integration: new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.example.com'),
  path: '/books/{book}',
});

routes[0].grantInvoke(principal);
```

## 网络锁定 APIs

您可以为您的 WebSocket API 设置授权程序 `$connect` 用于控制访问您的 API 的路由.

### Lambda 授权者

Lambda授权者使用 Lambda 函数来控制对您的 WebSocket API 的访问. 当客户端连接到您的 API时, API Gateway 引用了您的 Lambda 函数并使用响应来确定客户端是否能够访问您的 API .

```ts
import { WebSocketLambdaAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { WebSocketLambdaIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

// This function handles your auth logic
declare const authHandler: lambda.Function;

// This function handles your WebSocket requests
declare const handler: lambda.Function;

const authorizer = new WebSocketLambdaAuthorizer('Authorizer', authHandler);

const integration = new WebSocketLambdaIntegration(
  'Integration',
  handler,
);

new apigwv2.WebSocketApi(this, 'WebSocketApi', {
  connectRouteOptions: {
    integration,
    authorizer,
  },
});
```

### IAM 授权器

IAM授权程序可用于允许基于身份的访问您的WebSocket API.

```ts
import { WebSocketIamAuthorizer } from '@aws-cdk/aws-apigatewayv2-authorizers-alpha';
import { WebSocketLambdaIntegration } from '@aws-cdk/aws-apigatewayv2-integrations-alpha';

// This function handles your connect route
declare const connectHandler: lambda.Function;

const webSocketApi = new apigwv2.WebSocketApi(this, 'WebSocketApi');

webSocketApi.addRoute('$connect', {
  integration: new WebSocketLambdaIntegration('Integration', connectHandler),
  authorizer: new WebSocketIamAuthorizer()
});

// Create an IAM user (identity)
const user = new iam.User(this, 'User');

const webSocketArn = Stack.of(this).formatArn({
  service: 'execute-api',
  resource: webSocketApi.apiId,
});

// Grant access to the IAM user
user.attachInlinePolicy(new iam.Policy(this, 'AllowInvoke', {
  statements: [
    new iam.PolicyStatement({
      actions: ['execute-api:Invoke'],
      effect: iam.Effect.ALLOW,
      resources: [webSocketArn],
    }),
  ],
}));

```

## 常见问题

### @aws-cdk/aws-apigatewayv2-authorizers-alpha 是什么？

此模块被贬值\. 所有建筑现在都可以在aws-cdk-lib/aws-apigatewayv2授权器下使用

### 如何安装 @aws-cdk/aws-apigatewayv2-authorizers-alpha？

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

### @aws-cdk/aws-apigatewayv2-authorizers-alpha 支持 TypeScript 吗？

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

### @aws-cdk/aws-apigatewayv2-authorizers-alpha 支持 ESM 还是 CommonJS？

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

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

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

### @aws-cdk/aws-apigatewayv2-authorizers-alpha 可以商用吗？

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

### @aws-cdk/aws-apigatewayv2-authorizers-alpha 的下载量有多少？

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

### @aws-cdk/aws-apigatewayv2-authorizers-alpha 还在维护吗？

最新版本 2\.114\.1-alpha\.0 发布于 2023/12/06（2 年前）；至今共发布 169 个版本，其中过去 12 个月发布了 0 个；首次发布于 2021/10/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

