我目前在公司内部开发一个内部项目,该项目使用基于角色访问的授权,该授权使用带有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是否验证所有令牌? 如果我们要手动触发或验证令牌该怎么办呢?
答案 0 :(得分:0)
对于任何寻求启发的人,这是解释。
问题1(第一季度): ResourceServer如何与AuthorizationServer通信以验证访问令牌(令牌仍然有效还是无效)?
回答第一季度: 因此,从某种意义上说,我们在身份验证和授权过程中使用了非对称密钥(私有-公共密钥),我们将公共密钥共享给资源服务器,并将私有密钥保留在授权服务器中。 我们这样做是为了实现授权与资源服务器分离的目的。如果令牌是从持有正确对私钥对的授权服务器创建的,则可以验证带有令牌到达资源端点的任何请求时,将使用资源服务器中的公钥。
问题2(Q2):“我研究了该问题的答案,发现ResourceServer在安全性范围内验证了令牌本身 过滤链,这是真的吗?”
第二季度的答案:在某种程度上讲,如果使用的JWT令牌具有无效签名,则该令牌不能转换为JSON,因此在资源服务器将抛出无效令牌错误之后。 / p>
问题3(Q3):关于ResourceServer如何验证令牌的任何答案吗?
第三季度的答案:该答案与第二季度有关,这是我目前唯一的领先优势。
问题4(Q4):在请求ResourceServer端点时,ResourceServer是否验证所有令牌?
第4季度的答案:是的,如果您添加@EnableResourceServer批注并正确配置了端点,则会这样做。
问题5(Q5):如果我们要手动触发或验证令牌,该怎么办?
第5季度的答案:仍未找到任何线索。