Authorization标头是否由Cognito Authorizer传递给lambda函数



我计划在我的web应用程序中添加一些授权逻辑。用户是被管理的&由Cognito验证,API由与API网关粘合在一起的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' });
}

它肯定会通过标头上的令牌为我发送,也会通过requestContext.authorizer.jwt.claims发送,这可能对您更有用。

旧的api网关我总是将头大写为";"授权";,而不管实际报头使用什么情况。较新的总是将其小写为";授权";。

我建议试试:

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

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

最新更新