授权标头是否由 Cognito Authorizer 传递给 lambda 函数?

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

我计划向我的网络应用程序添加一些授权逻辑。用户由 Cognito 进行管理和身份验证,API 由与 API Gateway 粘合在一起的 Lambda 函数提供支持。目前,Cognito 仅验证用户的 OAuth 令牌并允许/拒绝请求。我想通过查看用户的组来进一步限制用户在 lambda 函数中可以执行的操作。

查看 OAuth 令牌,有关组的声明位于令牌正文中。我的问题是,Cognito Authorizer 是否将

Authorization: Bearer foo
标头的值传递给 API 网关和 Lambda 处理程序?我可以做这样的事情的方式

const groups = getGroupsFromToken(event.headers.Authorization);
if (groups.includes('some group')) {
  // let user do the thing
}
else {
  callback({ statusCode: 401, body: 'You can\'t do the thing' });
}
amazon-web-services aws-lambda aws-api-gateway amazon-cognito
1个回答
1
投票

它肯定会通过标头上的令牌为我发送,它也会通过

requestContext.authorizer.jwt.claims
发送,这可能对您更有用。

旧的 API 网关我总是将标头大写为“Authorization”,无论实际标头使用什么情况。较新的总是将其小写为“授权”。

我建议尝试:

const groups = getGroupsFromToken(event.headers.Authorization || event.headers.authorization);

我正在使用 lambda 代理集成(新的 APIGW UI 称为 lambda 集成 2.0),从您的回调来看,您似乎也在使用它。如果您使用旧的 lambda 集成(新 UI 中的 1.0),那么您需要一个映射模板。

© www.soinside.com 2019 - 2024. All rights reserved.