如何调试Cognito的idpresponse端点

时间:2019-06-14 23:42:02

标签: amazon-web-services paypal openid amazon-cognito

我正在为Cognito用户池设置OIDC提供程序。我正在使用的开放ID连接服务是Paypal。在贝宝(Paypal)发布代码并重定向到cognito的/oauth2/idpresponse端点的步骤之后,cognito应该将代码交换为访问令牌,我收到了"Exception processing authorization code"错误。如您所见,错误消息不是很说明性。

我不知道我在做什么错。我没有正确设置open 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和机密

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

1 个答案:

答案 0 :(得分:0)

我不了解调试Cognito端点的知识,但是我遇到了相同的问题,并通过执行以下操作解决了该问题:

  1. 转到AWS中的用户池。
  2. 联盟下的侧面导航中,选择属性映射
  3. 单击遇到问题的身份提供者的标签(在我的情况下是Google)。
  4. 应该有三列:捕获 Google属性用户池属性。确保在捕获列中选中的所有属性都映射到用户池属性列中的属性。

    更新:

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

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

执行这些步骤后,登录工作流程对我来说很有效。

我的猜测是auth流在Cognito和您的身份提供者之间正常工作,但是Cognito不知道如何将身份提供者返回的属性映射到您在用户池中设置的属性(在 必需的标准属性部分下的常规设置->属性