Amazon web services 如何调试Cognito的IDPSresponse端点

Amazon web services 如何调试Cognito的IDPSresponse端点,amazon-web-services,paypal,openid,amazon-cognito,Amazon Web Services,Paypal,Openid,Amazon Cognito,我正在为Cognito用户池设置OIDC提供程序。我使用的开放id连接服务是Paypal。在paypal发出代码并重定向到cognito的/oauth2/idpresponse端点的步骤中,cognito应该在该端点之后将代码交换为访问令牌,我收到异常处理授权代码错误。正如您所看到的,错误消息不是很具有描述性 我不知道我做错了什么。我没有正确设置打开id连接。在cognito等中设置客户端设置 以下是我用于openid connect的端点: https://www.sandbox.paypal

我正在为Cognito用户池设置OIDC提供程序。我使用的开放id连接服务是Paypal。在paypal发出代码并重定向到cognito的/oauth2/idpresponse端点的步骤中,cognito应该在该端点之后将代码交换为访问令牌,我收到异常处理授权代码错误。正如您所看到的,错误消息不是很具有描述性

我不知道我做错了什么。我没有正确设置打开id连接。在cognito等中设置客户端设置

以下是我用于openid connect的端点: https://www.sandbox.paypal.com/signin/authorize https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice https://api.sandbox.paypal.com/v1/oauth2/token/userinfo https://api.sandbox.paypal.com/v1/oauth2/certs

在应用程序客户端设置中,我启用了身份验证代码授权流和隐式流。我有自定义域设置。我提供了贝宝客户id和密码


我的猜测是,如果我能够以某种方式调试IDPS响应端点,我应该能够解决这个问题。有办法吗?也许是cloudwatch?

我不知道如何调试Cognito的端点,但我遇到了同样的问题,并通过执行以下操作修复了它:

转到AWS中的用户池。 在“联合”下的侧导航中,选择“属性映射”。 点击你遇到问题的身份提供者的标签,在我的例子中是谷歌。 应该有三列,捕获、Google属性和用户池属性。确保在“捕获”列中选中的所有属性都映射到“用户池属性”列中的属性

更新:

提交此答案后,我意识到默认情况下不会选中捕获列中的复选框。如果在用户池的“属性”部分按要求标记了任何属性,则需要将这些属性映射到外部身份提供程序提供的属性

例如,我在用户池设置中将电子邮件标记为必需属性。因此,当我添加Google作为身份提供者时,我必须转到Federation->Attribute mapping,单击Google的选项卡,选中电子邮件旁边捕获列中的框,然后从用户池属性列中的下拉框中选择电子邮件

采取这些步骤后,登录工作流程对我起了作用


我猜在Cognito和您的身份提供者之间,身份验证流工作得很好,但是Cognito不知道如何将身份提供者返回的属性映射到用户池中的“常规设置”->“需要哪些标准属性”部分下的“属性”中设置的属性。

类似的线程,这里没有答案:使用Google或FaceBook的预注册触发器,这里也一样。运气好吗?我也面临同样的问题,使用谷歌,它对我有效,但不再有效。@Mantas YMMV,但我发现,到目前为止,从预签名触发器返回的任何自定义错误条件都会导致此通用错误消息在回调URL中传回,而不是您希望在自定义错误中返回的信息。这很有意义,但不幸不起作用:/这可能还有其他原因无法解决问题,但如果您没有按照此答案中的描述正确配置,这将是它不起作用的原因之一。