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

时间:2018-08-27 04:14:13

标签: spring spring-security spring-security-oauth2

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

我设法开发了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是否验证所有令牌? 如果我们要手动触发或验证令牌该怎么办呢?

1 个答案:

答案 0 :(得分:0)

对于任何寻求启发的人,这是解释。

  

问题1(第一季度):   ResourceServer如何与AuthorizationServer通信以验证访问令牌(令牌仍然有效还是无效)?

     

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

     

问题2(Q2):“我研究了该问题的答案,发现ResourceServer在安全性范围内验证了令牌本身   过滤链,这是真的吗?”

     

第二季度的答案:在某种程度上讲,如果使用的JWT令牌具有无效签名,则该令牌不能转换为JSON,因此在资源服务器将抛出无效令牌错误之后。 / p>      

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

     

第三季度的答案:该答案与第二季度有关,这是我目前唯一的领先优势。

     

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

     

第4季度的答案:是的,如果您添加@EnableResourceServer批注并正确配置了端点,则会这样做。

     

问题5(Q5):如果我们要手动触发或验证令牌,该怎么办?

     

第5季度的答案:仍未找到任何线索。