AWS AppSync中AccessToken与IDToken返回结果不一致问题排查
解决方案:AWS AppSync使用Access Token时distributor字段返回null的问题
确认Access Token包含目标字段
先用jwt.io解码你的Access Token,检查Payload里是否存在distributor(或对应自定义字段名,比如custom:distributor)。如果没有,需要在身份提供商(如Cognito)的配置中调整:- 若使用Cognito User Pool,进入用户池的App客户端设置,在"OAuth 2.0"的范围里添加包含该字段的自定义范围,或者在用户池的属性映射中配置将用户属性映射到Access Token的Claims里。
调整Resolver的字段读取逻辑
检查你的Resolver配置(VTL模板或Lambda代码):- 对于VTL模板,确保读取的是Access Token中的正确Claims路径,比如如果字段是
custom:distributor,则模板中应写为$context.identity.claims['custom:distributor'],而不是ID Token中可能的键名。 - 对于Lambda Resolver,查看触发事件中的
requestContext.identity.claims结构,调整代码中提取字段的逻辑,确保从Access Token的Claims中正确获取distributor值。
- 对于VTL模板,确保读取的是Access Token中的正确Claims路径,比如如果字段是
验证AppSync身份验证配置
确认AppSync API的身份验证模式已正确配置为支持Access Token:- 如果使用Cognito User Pool作为身份提供商,检查AppSync的身份验证设置中,是否指定了正确的用户池ID和客户端ID,并且令牌验证器能正确解析Access Token的Claims。
测试验证
调整配置后,用curl重新发送携带Access Token的请求,验证distributor字段是否返回预期值。若仍有问题,查看CloudWatch中Lambda的执行日志,确认传入的上下文是否包含正确的字段值,排查是否存在解析或映射错误。
内容的提问来源于stack exchange,提问作者Hideman
相关产品推荐
相关产品推荐

