查看Oauth2规范,它在section 6中说:
... the refresh token is bound to the client to which it was issued.
但是,我无法在规范中找到明确指出令牌也应该绑定到请求客户端的任何内容。我假设情况如此,Introspection Extension似乎支持这种假设,但我想知道这是否正确。
例如,假设我使用两个使用Google作为Oauth2授权服务器的应用程序。我假设Google将发布两个不同的令牌,每个应用程序一个,并且令牌只能由发布它们的客户端使用,因为它们绑定到该客户端。
答案 0 :(得分:1)
访问令牌可以有各种实现。今天最广泛采用的是RFC 6750 https://tools.ietf.org/html/rfc6750中的“承载”令牌。承载令牌不会故意与客户绑定:它易于实施,降低了采用的障碍,并适用于各种用例。
假设Bearer令牌不容易被盗,可以避免将其绑定到特定客户端:预期的客户端确实可以与另一个客户端共享访问令牌,但它也可以共享访问令牌的数据如果令牌 绑定,则允许访问。
在要求更高安全性的环境中,可以使用RFC 7800 https://tools.ietf.org/html/rfc7800中定义的绑定到客户端的令牌。
答案 1 :(得分:0)
是的,我认为规范中隐含的是访问令牌只能由用户授权的应用程序使用。换句话说 - 拥有除授权应用程序以外的其他东西使用令牌访问用户数据几乎就是隐私失败的定义,并且是首先明确设计的授权协议。
现在,实际上,我认为让一个应用程序使用另一个应用程序的访问令牌可以在许多OAuth 2.0实现中正常工作。我并不认为Token Introspection扩展被广泛使用,并且大多数访问令牌都被设计为自我验证。实际上,这就是令牌窃取是一种安全风险的原因。相比之下,刷新令牌只有在与客户机密钥结合使用时才有用,因此它在技术上和哲学上都与客户“绑定”。