AWS HTTP API 网关 jwt 验证

问题描述 投票:0回答:1

我有一个关于 Http API 网关验证 jwt 签名的方式的问题。我使用 eu-west-1 中托管的 cognito 用户池作为身份提供者/令牌发行者。我在 eu-west-1 和 us-east-1 中部署了一个 Http API 网关。我使用 SAM 进行设置,API 部分如下所示:

HttpApi:
   Type: AWS::Serverless::HttpApi
   Properties:
      DisableExecuteApiEndpoint: true
      StageName: !Ref StageName
      DefinitionBody:
         'Fn::Transform':
            Name: AWS::Include
            Parameters:
               Location: api.yaml
      Auth:
         DefaultAuthorizer: OAuth2Authorizer
         Authorizers:
            OAuth2Authorizer:
               IdentitySource: $request.header.Authorization
               JwtConfiguration:
                  issuer: https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_xxxxxxxx
                  audience:
                     - xxxxxxxxx

一切工作正常,但是当我进行一些性能测试时,我发现向路由添加授权会极大地增加延迟。 eu-west-1 中托管的 api 的延迟从 75 毫秒增加到 100 毫秒,而 us-east-1 中托管的 api 的延迟从 160 毫秒增加到 550 毫秒(测试在荷兰运行,结果是超过 50 次调用的平均值)每次测试)。 这些结要求。我对 Oauth 的了解有限,但我认为 .well-known/openid-configuration 只需要定期检查,因此 api 网关可以验证令牌,而无需进行额外的网络调用。我不知道从这里到哪里去,因为我不知道这是否就是事情的运作方式,或者这是否属于 Oauth 的事情,或者是否完全是其他事情。任何反馈将不胜感激。

amazon-web-services oauth-2.0 amazon-cognito openid-connect aws-http-api
1个回答
4
投票

授权者将至少偶尔调用 Cognito,以从 JWKS 端点获取令牌签名公钥。授权者返回策略文档,您还应该能够配置授权缓存的选项,以便使用相同访问令牌的后续 API 调用避免调用授权服务器。

授权者不是唯一的选择,还可以在每个 lambda 中进行 JWT 访问令牌验证和基于声明的授权。这有助于确保恶意 lambda 无法访问未经授权的数据。我的无服务器 API 代码示例遵循这种方法并使用 DynamoDB 缓存 JWKS。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.