oauth2-资源服务器如何知道用户是否已授权?
我一直在读关于谷歌的文章,但没有一篇向我解释这个问题。digitalocean的文章中有一幅图片,我想用它来解释: 所以我不理解第5步和第6步。当auth server返回访问令牌时,该令牌用于从资源服务器检索数据。但资源服务器如何知道访问令牌是否真的有效?它是否询问授权服务器令牌是否有效oauth2-资源服务器如何知道用户是否已授权?,oauth,Oauth,我一直在读关于谷歌的文章,但没有一篇向我解释这个问题。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以及发起机构所需的适当范围。