gpt4 book ai didi

amazon-web-services - AWS HTTP API 网关 jwt 验证

转载 作者:行者123 更新时间:2023-12-05 03:37:21 24 4
gpt4 key购买 nike

我对 Http API 网关验证 jwt 签名的方式有疑问。我使用托管在 eu-west-1 中的认知用户池作为身份提供者/ token 发行者。我在 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 网关可以验证 token 而无需进行额外的网络调用。我不确定从这里去哪里,因为我不知道这是否就是事情的运作方式,或者这是否在 Oauth 中,或者它是否完全不同。任何反馈将不胜感激。

最佳答案

授权方应偶尔调用 Cognito,以从 JWKS 端点获取 token 签名公钥。

然后,在 AWS 控制台中,您需要确保在 API 网关/授权器下启用了授权缓存,并且它指向 HTTP 授权 header 作为缓存的关键。这将确保使用相同访问 token 的后续调用不会导致 Cognito 查找。至少我希望 OAuth2Authorizer 能像那样工作——否则它将无法使用。

我的资源

我有一些关于此的内容可以帮助您更好地理解机制:

我的情况有点不同,因为我使用的是 REST 端点(而不是 HTTP)并且还实现了自定义授权方。希望你能避免这种情况,因为它非常不愉快。值得理解的是,策略文档是使结果缓存起作用的机制。

future

AWS 中的授权机制非常有限,例如,它不适用于安全 cookie。因此,我希望更新我的代码以在每个 lambda 中执行 OAuth 工作,以及一个单独的缓存。

关于amazon-web-services - AWS HTTP API 网关 jwt 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69363407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com