如何识别oauth2 redirect_uri回调的提供者?

时间:2015-05-11 11:54:26

标签: oauth-2.0 openid-connect

我试图了解如何正确识别由哪个提供商发起的返回授权请求。我看到三种方法:

  • 使用提供程序特定的redirect_uri回调URI。 /oauth2/<provider-name>/callback等。
  • 以某种方式在state参数中编码提供商ID /名称
  • 在网络会话中存储待处理的提供者ID /名称
  • 尝试验证所有使用过的提供商的响应

我已经阅读了OAuth2规范的部分内容,但我找不到任何讨论它的内容。看看其他客户端实现,似乎提供者特定的URI是最常见的解决方案。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

客户端可能不是多租户,并且与单个授权服务器紧密集成,因此不需要存储提供程序标识符,因为只有一个固定的标识符。这可能是没有明显解决方案的原因。

像你这样的多提供商客户应该将提供商标识符存储为state的一部分。这是因为state应受到保护,而特定于提供商的redirect_uri则不受保护。可以针对提供者B的回调为提供者A播放访问令牌,从而破坏提供者特定回调的目的。

state可以通过引用服务器状态或加密cookie来保护,也可以通过状态参数的自包含加密结构化值的形式保护,因此可以是一种安全的机制。存储提供标识符。