AWS AppSync控制台对接Cognito用户池可否使用Access Token替代ID Token
关于AWS AppSync控制台Cognito认证使用Access Token替代ID Token的问题解答
首先给出明确结论:AWS AppSync官方控制台目前不支持直接配置切换Cognito User Pool认证时发送的令牌类型,默认固定使用ID Token进行请求校验。
你可以根据业务场景选择以下可行方案实现需求:
- 方案1:在AppSync Resolver中透传ID Token对应的用户标识,使用服务端权限调用Cognito接口
你可以在Resolver逻辑中先从ID Token里提取sub(用户唯一标识)等必要信息,绑定拥有Cognito用户管理权限的IAM角色调用Cognito的Admin系列操作(比如AdminUpdateUserAttributes)修改用户信息,不需要依赖前端传入的Access Token,这种方案权限完全由服务端控制,安全性更高。 - 方案2:使用第三方GraphQL客户端调试工具替代AppSync官方控制台
比如使用Postman、Altair GraphQL Client这类工具,手动配置请求头Authorization值为你获取到的Cognito Access Token后再发起请求,完全可以复现控制台的调试效果,同时满足你需要传入Access Token的需求。 - 方案3:新增自定义请求头透传Access Token(仅调试用)
你可以在AppSync控制台的查询页面「请求头」配置项中,手动添加自定义头字段(比如X-Cognito-Access-Token),值填入你自己获取的Access Token,后端Resolver中从context.request.headers里提取该值进行后续Cognito接口调用即可,不需要修改默认的Authorization头校验逻辑。
注意:如果你的AppSync API配置的Cognito User Pool认证规则中指定了oauth scope校验,默认的ID Token不会携带scope信息,这种场景也推荐直接使用第三方调试工具传入Access Token完成测试。
内容的提问来源于stack exchange,提问作者ATang
相关产品推荐
相关产品推荐

