OAuth2流程-服务器是否可以通过Auth服务器进行验证?


10

我已经阅读了很多有关OAuth2的文章,试图弄清楚它,但是我仍然对某些事情感到困惑。

我了解到客户端已向OAuth提供者(例如Google)授权,并允许资源服务器访问用户的个人资料数据。然后,客户端可以将访问令牌发送到资源服务器,并获得资源。

但是,在任何文档中似乎都没有涵盖的内容是,当客户端应用向资源服务器请求资源并向其传递访问令牌时,会发生什么。到目前为止,我阅读的所有内容都指出资源服务器只是以请求的资源作为响应。

但这似乎是一个巨大的漏洞,资源服务器肯定必须以某种方式验证访问令牌,否则我可以伪造任何旧请求并传递旧的,被盗的,伪造的或随机生成的令牌,它只会接受它。

谁能指出我对OAuth2的简单理解,因为到目前为止,我阅读的内容仍不完整。

Answers:


8

找到了。埋在规格中。他们说资源服务器应使用auth服务器验证访问令牌,但该访问令牌不在文档范围内。可惜,我会认为令牌验证是重要的一部分。


1
关于重要部分,可能值得阅读此博客文章,以获取有关OAuth2优先级的一些背景知识。
拉尔斯·维克伦德

1
感谢您的阅读。我的要求非常简单,因为我想允许iOS应用通过google,twitter,facebook等进行身份验证,将某种形式的授权传递给我的服务器,并让我的服务器对其进行验证并启用对资源的访问。由于了解这是如何工作以及在哪里必须做什么的复杂性,事实证明,该问题比我预期的要复杂。
drekka

更准确地说,附录A:“为了验证请求上的签名,受保护的资源可以将令牌标识符提交给授权服务器的自省端点,以获取该令牌所需的必要密钥信息。此用法的详细信息在外部本规范的范围,将在扩展名“ ...”中定义。
JulienD

2

令牌验证通常以2种方式之一进行处理。

1)使用预共享密钥对令牌进行加密签名。对于分布式的,激增的系统来说,这显然有缺点。

2)授权服务器(AS)提供用于令牌验证或自省的端点。该方法已在2015年10月的IETF RFC 7662中标准化,请参阅:https//tools.ietf.org/html/rfc7662

此堆栈溢出问题/解答包含Google和Github的示例:https : //stackoverflow.com/questions/12296017/how-to-validate-an-oauth-2-0-access-token-for-a-resource-server


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.