设置 AWS Cognito

为访问您文档的访客设置 AWS Cognito 登录界面。

要使用 AWS Cognito 为您的 GitBook 站点设置经过身份验证的访问,流程如下:

1

创建一个新的 AWS Cognito 应用

从您的 AWS 控制台创建一个 AWS Cognito 应用。

2

安装并配置 AWS Cognito 集成

安装 AWS Cognito 集成并添加所需的配置。

3

为自适应内容配置 AWS Cognito(可选)

配置 AWS Cognito 以配合 GitBook 中的自适应内容使用。

创建一个新的 AWS Cognito 应用

在 Cognito 中进入您想要的用户池,然后点击 应用集成。记下 Cognito 域,我们需要它来配置集成。

向下滚动到底部并点击“创建应用客户端”。在应用类型中选择“机密客户端”。向下滚动到托管 UI 设置。在允许的回调 URL 中,输入在空间上安装集成后从 GitBook 获取的回调 URL。

向下继续滚动到“OAuth 2.0 授权类型”——确保已选择“授权码授权(Authorization code grant)”。

对于“OpenID Connect 范围”,确保已选中 OpenID。

向下滚动并点击“创建应用客户端”。

点击已创建的应用客户端并记下客户端 ID 和客户端密钥(Client Secret)。

安装并配置 AWS Cognito 集成

在 GitBook 应用中导航到集成,选择“已验证访问(authenticated access)”作为类别,然后安装 AWS Cognito 集成。

A GitBook screenshot showing the AWS Cognito integration install screen

在您的站点上安装后,转到配置并记下位于“保存”按钮上方的回调 URL。我们需要它来设置 Cognito。

打开您在其上安装该集成的空间的 Cognito 集成配置界面。

它应如下图所示:

A GitBook screenshot showing the AWS Cognito configuration screen

对于 客户端 ID、Cognito 域 和 客户端密钥,请粘贴您从 Cognito 获取的值。

点击 保存。

现在,在 GitBook 中,关闭集成模态框并点击 Manage site 按钮。导航到 受众,选择 经过身份验证的访问,并选择 Cognito 作为后端。然后,点击 更新受众。转到站点的屏幕并点击 发布。 该站点现在已发布在由您的 Auth0 应用控制的经过身份验证的访问之后。要试用它,请点击“访问”。系统会要求您使用 Cognito 登录,这将确认您的站点已通过 Auth0 在经过身份验证的访问后发布。

为自适应内容配置 AWS Cognito(可选)

要在 GitBook 中将自适应内容与经过身份验证的访问结合使用,您需要配置 Amazon Cognito 用户池,使 ID 令牌包含自定义声明(custom claims)。

这通常通过创建一个 Cognito Lambda 触发器——具体来说是一个 预令牌生成(Pre Token Generation) Lambda——返回覆盖或附加自定义声明的 JSON 有效负载来完成。这些声明可能包括用户角色、订阅等级或与您内容相关的其他元数据。

示例如下所示:

export const handler = async (event, context) => {
  // 从事件请求中检索用户属性
  const userAttributes = event.request.userAttributes;

  // 向事件响应添加附加声明
  event.response = {
    "claimsAndScopeOverrideDetails": {
      "idTokenGeneration": {},
      "accessTokenGeneration": {
        "claimsToAddOrOverride": {
          "products": ['api', 'sites', 'askAI'],
          "isBetaUser": true,
          "isAlphaUser": true,
        }
      }
    }
  };
  // 返回到 Amazon Cognito
  context.done(null, event);
};

添加后,这些键值对将包含在身份验证令牌中并传递给 GitBook,从而允许您的站点根据经过身份验证的用户配置文件动态调整其内容。

最后更新于

这有帮助吗?