首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于JWT声明中的内部错误-空值,AWS认知授权程序错误500执行失败

由于JWT声明中的内部错误-空值,AWS认知授权程序错误500执行失败
EN

Stack Overflow用户
提问于 2018-11-13 01:58:55
回答 4查看 1.6K关注 0票数 0

我和一个认知授权人有问题,已经没有测试选项了(我能想到),所以想知道是否有人遇到过类似的问题。我已经搜索过论坛,以前的例子似乎与AWS事件有关,并且“解决了自己”。我的问题已经持续了一个多星期。

我有3个使用Terraform (抱歉云形成)构建的认知用户池,并作为API网关中的认知授权器附加到不同的REST API中。我还有另外3个API,与其他3个API几乎相同(除了名称)。

如果我获得一个有效的JWT,使用AWS放大器(或直接使用认知API ),或者使用控制台测试授权程序,使用CLI测试授权程序,或者在打开auth的情况下向端点发出API请求,则得到以下结果:

代码语言:javascript
复制
{
    "clientStatus": 500,
    "log": "Execution failed due to an internal error",
    "latency": 28
}

我打开了API网关登录,它没有提供什么洞察力:

代码语言:javascript
复制
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Extended Request Id: QOP7MG0ELPEFUBg=
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Starting authorizer: x1rebc for request: 63aac040-e610-11e8-a304-1dab6e773ddd
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Execution failed due to an internal error
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Gateway response type: DEFAULT_5XX with status code: 500
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Gateway response body: {"message":null}
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Gateway response headers: {Access-Control-Allow-Origin=*, Access-Control-Allow-Headers=Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token, Access-Control-Allow-Methods=GET,OPTIONS}

如果我复制Terraform脚本并部署另一个用户池和Authorizer,然后将其附加到中断的API端点,那么一切都很好。如果我将已经部署到坏API端点的其他3个授权程序中的一个附加在一起,那么一切都很好。

如果我将中断端点的授权器附加到另一个正在工作并已打开的API端点上(在另一个与工作授权程序一起工作的API中),则该API端点中断.因此,这对我来说是一个认知问题,而且我找不到任何日志!

如果它几乎是任何其他AWS资源,我会将其转储,重新部署并重新启动。然而,了解这一点的根本原因对我来说非常重要,因为绑定生产用户池和所有用户及其详细信息(据我所知)无法导出或迁移(据我所知),并重新配置web应用程序以使用无法静态映射(据我所知)的新认知应用程序和用户池in,在生产环境中我不想冒险。

任何进一步的信息或指示将是非常感谢!谢谢,

汤姆

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-25 15:50:50

如果有人遇到这种情况,我就会发现问题的真相(几个月前我就已经解决了这个问题)。

我在前令牌生成触发器中创建了一个带有空值的JWT声明,例如

{ "field": null }

认知对此没有问题,并在登录时将令牌发回,并使用此空值完成。然而,当您使用它登录时,它会掉下来,并给您一个神秘的“内部错误”,没有详细信息。

更改为以下内容解决了问题:

{ "field" "null" }

票数 1
EN

Stack Overflow用户

发布于 2020-07-08 20:05:57

在我的例子中,我得到这个错误是因为定义在认知用户池中的自定义属性的数据类型不匹配,以及当从预令牌生成器lambda中添加时。

票数 1
EN

Stack Overflow用户

发布于 2022-04-11 19:51:06

在我的例子中,因为我使用的是preTokenGenerationLambda,所以我执行的是RDS操作。我不得不

代码语言:javascript
复制
context.callbackWaitsForEmptyEventLoop = false;

Doc说:callbackWaitsForEmptyEventLoop -设置为false,在回调运行时立即发送响应,而不是等待Node.js事件循环为空。如果这是假的,那么在下一次调用期间,任何未执行的事件都会继续运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53272693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档