Oauth 2.0 如何识别oauth2重定向uri回调的提供程序?

Oauth 2.0 如何识别oauth2重定向uri回调的提供程序?,oauth-2.0,openid-connect,Oauth 2.0,Openid Connect,我试图理解如何正确识别返回授权请求的提供者。我认为有三种方法: 使用特定于提供程序的重定向\u uri回调uri/oauth2//回调等 以某种方式对状态下的提供者id/名称进行编码参数 在web会话中存储挂起的提供程序id/名称 尝试使用所有使用的提供程序验证响应 我已经阅读了OAuth2规范的部分内容,但找不到任何讨论它的内容。从其他客户端实现来看,特定于提供者的URI似乎是最常见的解决方案。我遗漏了什么吗?客户端可能不是多租户,并且与单个授权服务器紧密集成,因此不需要存储提供商标识符,

我试图理解如何正确识别返回授权请求的提供者。我认为有三种方法:

  • 使用特定于提供程序的
    重定向\u uri
    回调uri<代码>/oauth2//回调等
  • 以某种方式对
    状态下的提供者id/名称进行编码
    参数
  • 在web会话中存储挂起的提供程序id/名称
  • 尝试使用所有使用的提供程序验证响应

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

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

像您这样的多提供商客户端应该将提供商标识符存储为
状态的一部分。这是因为应保护
状态
,而特定于提供程序的
重定向uri
不受保护。可以针对提供者B的回调使用提供者A的访问令牌,从而破坏特定于提供者的回调的目的


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

谢谢您的回答!我正在实现OpenID连接,所以我正在阅读OAuth2的工作原理。“播放访问令牌”是指与响应类型代码一起使用的代码吗?但是在OpenID连接的情况下,依赖令牌验证可以吗?假设您区分使用状态或不同回调的提供程序,以了解从何处获取令牌以及使用哪个共享密钥。是的,在OpenID Connect中,可以通过查看
id\u令牌中的
iss
声明来识别(并验证)提供程序。是的,当谈到基本客户端配置文件时,播放将使用
code
,在隐式客户端配置文件中,播放将是
access\u token