Spring Security 5 OAuth 2.0 ResourceServer如何与AuthorizationServer通信?

问题描述 投票:0回答:1

我目前正在我的公司开发一个内部项目,该项目使用基于角色访问的授权,使用Spring安全性和OAuth2和JWT。

我设法开发了AuthorizationServer,它只返回一个带有我的自定义声明的访问令牌。

我也已经能够创建能够解码访问令牌以验证用户角色和访问权限的ResourceServer。

我一直在遵循RFC 6749 OAuth 2.0授权框架。它显示了这样的图表:access and refresh token protocol flow

我的问题是ResourceServer如何与AuthorizationServer通信以验证访问令牌令牌是否仍然有效?

the questioned flow i had in mind

我研究了这个问题的答案,发现ResourceServer在安全过滤器链中验证令牌本身,这是完全正确的吗?有没有关于ResourceServer如何验证令牌的答案?在请求ResourceServer端点时,ResourceServer是否验证所有令牌?如果我们想要手动触发或验证令牌怎么办呢?无论如何要做到这一点?

spring spring-security spring-security-oauth2
1个回答
0
投票

对于寻求启蒙的人来说,这里有解释。

问题1(Q1):ResourceServer如何与AuthorizationServer通信以验证访问令牌令牌是否仍然有效?

对Q1的回答:因此,在某种意义上,我们在身份验证和授权过程中使用了非对称密钥(私有 - 公钥),我们将公钥共享到我们的资源服务器,并将私钥保存在我们的授权服务器中。我们这样做是为了实现Authorization和Resource Server分离的目的。如果令牌是从保存正确的私钥对的授权服务器创建的,则可以验证具有到达资源端点的令牌的任何请求时资源服务器中的公钥。

问题2(Q2):“我研究了这个问题的答案,发现ResourceServer在安全过滤器链中验证令牌本身,这是完全正确的吗?”

对Q2的回答:如果使用的JWT令牌具有无效签名,则某些情况确实如此,令牌无法转换为JSON,因此Resource Server将抛出无效令牌错误。

问题3(Q3):有没有关于ResourceServer如何验证令牌的答案?

回答Q3:这个答案与Q2有关,这是我目前唯一的领先。

问题4(Q4):当ResourceServer端点被请求时,ResourceServer是否验证所有令牌?

回答Q4:是的,如果添加@EnableResourceServer注释并正确配置端点,它会这样做。

问题5(Q5):如果我们想要手动触发或验证令牌怎么办?无论如何要做到这一点?

回答Q5:还没有找到任何领先优势。

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