问题描述
我正在使用Amplify Auth类别,其中包括一个Admin Queries Api,但无法访问该api。
在Postman中,我使用GET方法测试端点:
https://xxxxxxxxxxxx.execute-api.eu-west-2.amazonaws.com/dev/getUser/?username=jan
(我在admin组中有一个名为jan的认知用户)。我包括一个Authorization标头,其中包含用户ID令牌作为值。 (ID令牌值在api网关控制台中用于测试api网关授权者时有效)。邮递员返回401未经授权状态。 Cloudwatch中什么也没有显示。
在Api Gateway控制台中,在测试api的任何资源操作时,我使用以下设置:
method: GET,path {proxy}: getUser,query strings {proxy}: username=jan,headers {proxy}: Authorization:id token
结果表明已成功完成执行,方法已完成,状态:500 ,但返回“消息”:“无法读取未定义的属性“声明””
lambda执行显示在Cloudwatch中。
感谢任何帮助。
谢谢
解决方法
500 错误的原因是 Api 网关没有正确转发 Cognito 身份验证的用户。
AdminQueries
Lambda 可能在 req.apiGateway.event.requestContext.authorizer.claims["cognito:groups"]
处失败,它被设置为检查所有路由。
How to Create an Authenticated REST API on AWS with API Gateway,Lambda,Cognito,& AWS Amplify 帮助我进行了设置。