CloudFront 签名的 Cookie 可保留 API 网关访问的会话状态



我正在为我的 Web 应用程序使用以下技术堆栈

  • CloudFront 作为代理和 CDN
  • S3 或 CloudFront 为 AngularJS 应用程序提供服务
  • APIGateway origin to CloudFront for REST API
  • 具有 CognitoAuthorizer 的 Cognito UserPool,用于在 API Gateway 中进行身份验证

为了存储Web应用程序用户会话,我通常将来自Cognito的JWT存储在客户端Cookie,HTML5 LocalStorage或SessionStorage中。

但是,我很想知道 CloudFront 签名 Cookie 可以为 Web 应用程序提供会话状态。我希望使用签名 Cookie 来存储 JWT,并使用 Edge Lambda 将签名 Cookie 映射到授权标头以对 API 网关进行身份验证。我有兴趣知道

  1. 使用 CloudFront 签名的 Cookie 来存储 JWT 是否有效?
  2. 在 Web 应用程序的签名 Cookie 中存储会话状态是否是一种好方法?
  3. 如果是这样,围绕它的最佳实践是什么?我不确定使用Edge Lambda是正确的方法。

CloudFront 签名 Cookie 无法存储自定义数据。因此,无法将 AWS Cognito 用户池id_token存储在签名 Cookie 中。因此,受到质疑的方法不可能继续下去。

替代方法

相反,登录 API 网关路由可以同时设置 SignedCookie 和单独的 Cookie 来存储 JWT 令牌,其中 Cookie 在将请求转发到 API 网关之前,在预配置的边缘 Lambda 上进行验证并添加到授权标头中。

最新更新