在Android中放大身份验证,无法访问管理查询API

问题描述

我正在使用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 帮助我进行了设置。