oauth2-资源服务器如何知道用户是否已授权?

oauth2-资源服务器如何知道用户是否已授权?,oauth,Oauth,我一直在读关于谷歌的文章,但没有一篇向我解释这个问题。digitalocean的文章中有一幅图片,我想用它来解释: 所以我不理解第5步和第6步。当auth server返回访问令牌时,该令牌用于从资源服务器检索数据。但资源服务器如何知道访问令牌是否真的有效?它是否询问授权服务器令牌是否有效 例如,如果我使用一些随机访问令牌并使用该令牌向资源服务器发送请求,将会发生什么?它如何知道令牌无效?每个授权服务器都有自己创建访问令牌的方法。使用授权的资源服务器知道此方法,并且能够根据需要对其进行验证 标

我一直在读关于谷歌的文章,但没有一篇向我解释这个问题。digitalocean的文章中有一幅图片,我想用它来解释:

所以我不理解第5步和第6步。当auth server返回访问令牌时,该令牌用于从资源服务器检索数据。但资源服务器如何知道访问令牌是否真的有效?它是否询问授权服务器令牌是否有效


例如,如果我使用一些随机访问令牌并使用该令牌向资源服务器发送请求,将会发生什么?它如何知道令牌无效?

每个授权服务器都有自己创建访问令牌的方法。使用授权的资源服务器知道此方法,并且能够根据需要对其进行验证

标准oauth服务器都有一个发现文档。本文档说明如何创建其标记

使用的钥匙可以找到

  • 用户(资源所有者)-拥有数据的人
  • 资源服务器(API)-存储用户(资源所有者)数据的系统
  • 应用程序(客户端)-希望访问用户拥有的数据的应用程序
  • 授权服务器-是Oauth2或身份服务器
故事

作为一名开发者,我创建了超级棒的谷歌分析应用程序
(应用程序(客户端))
。我在
(授权服务器)
中设置了我的应用程序,并获得了客户端id和客户端密码

当您
(用户(资源所有者))
运行我的应用程序时,您会看到一个登录屏幕,后面是一个同意屏幕

我的应用程序
Google Analytics windows
希望通过Google Analytics api
(资源服务器(api))


如果您说是,那么授权服务器将向
应用程序(客户端)
返回一个访问令牌,它可以使用该令牌访问Google anlaytics api
(资源服务器(api))

验证资源服务器中的访问令牌通常超出OAuth规范的范围。 有两种方法可以做到这一点

  • 使用访问令牌调用授权服务器的内省端点。您可以通过对此的响应来确定有效性(例如:活动参数为true)
  • 在资源服务器上手动解密令牌。您可以检查访问令牌中的参数并验证令牌。但是,令牌中的参数可能因您使用的授权服务器而异。如果令牌是JWT格式的,您可以轻松地使用nimbusds或auth0之类的库来验证签名和其他声明

希望这能有所帮助。

所以RS和AS是两个独立的服务器,资源服务器可以访问授权服务器,并且每次对其执行调用时都会验证令牌?是的,每次尝试使用时,RS都会验证访问令牌。它不需要联系AS来检查它是否有效,它自己也可以这样做。它如何准确地验证它?我很难理解这一点。如果AS是创建它的人,RS如何知道它是否有效?当它被解密时,它包含一个时间戳,以便服务器知道它不是旧的。它还包含API以及发起机构所需的适当范围。