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

时间:2018-10-24 09:49:08

标签: oauth

我一直在阅读Google上的文章,但没有一个向我解释问题。我想用它来解释一下digitalocean的文章中的这张图片:

enter image description here

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

例如,如果我想出了一些随机访问令牌并将带有该令牌的请求发送到资源服务器,将会发生什么?如何知道令牌无效?

2 个答案:

答案 0 :(得分:2)

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

标准oauth服务器都具有发现文档。本文档介绍了如何创建其令牌。

https://accounts.google.com/.well-known/openid-configuration

可以找到使用的键jwks_uri

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

故事

我作为开发人员创建了超级出色的Google Analytics(分析)应用(Application (Client))。我在(Authorization server)中设置了应用程序,并获得了客户端ID和客户端密码。

(User (Resource owner))运行我的应用程序时,您会看到一个登录屏幕,然后是一个同意屏幕

enter image description here

我的应用Google Analytics windows想通过Google Analytics(分析)API google analytics data访问您的(Resource server (API))

如果您说是,则授权服务器会将访问令牌返回到Application (Client),可用于访问Google anlaytics API (Resource server (API))

答案 1 :(得分:0)

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

  • 使用访问令牌调用授权服务器的自省端点。您可以通过此响应来确定有效性(例如:active参数为true)。
  • 在资源服务器上手动解密令牌。您可以检查访问令牌中的参数并验证令牌。但是,令牌中的参数可能会有所不同,具体取决于您使用的授权服务器。如果令牌采用JWT格式,则可以轻松使用nimbusds或auth0之类的库来验证签名和其他声明。

希望这会有所帮助。