oauth2 - 资源服务器如何知道用户是否已获得授权?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oauth2 - 资源服务器如何知道用户是否已获得授权?相关的知识,希望对你有一定的参考价值。
我一直在阅读谷歌上的文章,但没有人向我解释这个问题。在digitalocean的文章中有这个图像,我想用它来解释:
所以我不理解步骤5和6.当auth服务器返回访问令牌时,这用于从资源服务器检索数据。但资源服务器如何知道访问令牌是否真的有效?如果令牌有效,是否会询问授权服务器?
例如,如果我想出一些随机访问令牌并使用此令牌向资源服务器发送请求,会发生什么?它是如何知道令牌无效的?
每个授权服务器都有自己的方式来创建其访问令牌。使用授权的资源服务器知道此方法,并且能够根据需要对其进行验证。
标准的oauth服务器都有一个发现文档。该文档说明了它如何创建其令牌。
https://accounts.google.com/.well-known/openid-configuration
使用的密钥可以找到jwks_uri
- 用户(资源所有者) - 拥有数据的人
- 资源服务器(API) - 具有用户(资源所有者)数据存储的系统。
- 应用程序(客户端) - 希望访问用户拥有的数据的应用程序。
- 授权服务器 - 是Oauth2还是身份服务器。
故事
我作为开发人员创建超级棒的谷歌分析应用程序(Application (Client))
。我在(Authorization server)
中设置我的应用程序并获得客户端ID和客户端密码。
当你(User (Resource owner))
运行我的应用程序时,你会得到一个登录屏幕,然后是同意屏幕
我的应用程序Google Analytics windows
希望通过Google analytics api google analytics data
访问您的(Resource server (API))
如果你说是,那么授权服务器将返回一个访问令牌给Application (Client)
,它可以用来访问谷歌anlaytics api (Resource server (API))
验证资源服务器中的访问令牌通常超出了OAuth规范的范围。有两种方法可以做到这一点,
- 使用访问令牌调用授权服务器的内省端点。您可以通过此响应确定有效性(例如:active参数为true)。
- 在资源服务器上手动解密令牌。您可以检查访问令牌中的参数并验证令牌。但是,令牌中的参数可能会因您使用的授权服务器而异。如果令牌是JWT格式,您可以轻松使用像nimbusds或auth0这样的库来验证签名和其他声明。
希望这可以帮助。
以上是关于oauth2 - 资源服务器如何知道用户是否已获得授权?的主要内容,如果未能解决你的问题,请参考以下文章