amazon-web-services - 如何调试 Cognito 的 idpresponse 端点

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

我正在为 Cognito 用户池设置 OIDC 提供商。我使用的 open id connect 服务是 Paypal。在 paypal 发布代码并重定向到 cognito 的 /oauth2/idpresponse 端点的步骤,之后 cognito 应该交换访问 token 的代码,我收到 “异常处理授权代码” 错误。如您所见,错误消息的描述性不强。

我不知道我做错了什么。我确实正确设置了 open id connect。在 cognito 等中设置客户端设置。

这些是我用于 openid 连接的端点: 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

在应用程序客户端设置中,我启用了授权代码授权流程和隐式流程。我有自定义域设置。我提供了 Paypal 客户 ID 和密码

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

最佳答案

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

  1. 转到您在 AWS 中的用户池。
  2. Federation 下的侧边导航中,选择Attribute mapping
  3. 点击您遇到问题的身份提供商的标签(在我的例子中是 Google)。
  4. 应该有三列,捕获Google 属性用户池属性。确保在 Capture 列中选中的所有属性都映射到 User pool attribute 列中的一个属性。

    更新:

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

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

执行这些步骤后,登录工作流程对我有用。

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

关于amazon-web-services - 如何调试 Cognito 的 idpresponse 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606217/

相关文章:

asp.net-mvc - 为什么有关 openID 用户的信息不通过协议(protocol)传递?

java - 如何使用 OpenID 检索当前经过身份验证的用户?

java - C++ 或 java openid 中继器。如何在桌面应用程序中使用 openid 进行登录,以及安全注意事项?

amazon-web-services - ECS Execution Role导致容器启动时日志驱动失败?

amazon-web-services - 重写 api 网关集成请求中的目标路径

php - Paypal的notify_url并返回

ssl - SSL 站点和 PayPal Standard 之间的错误

php - Paypal PDT 无法使用 CURL 工作

amazon-web-services - AWS Cloudformation 创建的角色未显示在身份池下拉列表中

amazon-web-services - AWS EC2 用户数据加密