给出单独的spring-security-oauth2授权服务器和资源服务器:
我希望授权服务器的/oauth/check_token
端点在Authorization
头中接受来自资源服务器的Bearer令牌,但它仅接受Basic
身份验证。注意:我指的是请求身份验证令牌,而不是要检查的令牌。
我认为OAuth2AuthenticationProcessingFilter
负责提取和验证Authorization: Bearer ...
,但基于javadoc,它似乎仅由资源服务器用于验证来自用户或其他客户端的请求。
与授权服务器通信时,资源服务器应始终提供Basic
身份验证吗?最佳做法是什么?如果接受Bearer
令牌,是否需要通过@EnableResourceServer
将授权服务器配置为资源服务器才能获得此功能?
答案 0 :(得分:0)
来自Javadoc的CheckTokenEndpoint
注释:
为无法访问客户端(或使用不透明令牌值的客户端)解码访问令牌的控制器。
由于客户端通过具有基本身份验证的授权服务器进行身份验证以授予访问权限,因此/oauth/check_token
端点也需要基本身份验证也很有意义。
通常,资源服务器接收到的令牌是自编码的(或由令牌存储支持),因此无论如何,它无需通过直接与授权服务器通信来检查令牌。 不需要在资源服务器和授权服务器之间进行通信。
如果确实需要与授权服务器进行交互,则在使用JWT时可能需要获取其公共密钥。但是,保护该端点没有真正的用处,因为出于某种原因它是公钥。同样,这将在资源服务器启动时发生,并且肯定不是针对它收到的每个令牌。