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

问题描述 投票:-1回答:2

我一直在阅读谷歌上的文章,但没有人向我解释这个问题。在digitalocean的文章中有这个图像,我想用它来解释:

enter image description here

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

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

oauth
2个回答
2
投票

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

标准的oauth服务器都有一个发现文档。该文档说明了它如何创建其令牌。

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

使用的密钥可以找到jwks_uri

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

故事

我作为开发人员创建超级棒的谷歌分析应用程序(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),它可以用来访问谷歌anlaytics api (Resource server (API))


0
投票

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

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

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.