如何配置Spring Boot调用授权服务器自省端点验证JWT令牌
实现Spring Boot资源服务器调用授权服务器自省端点验证令牌
要实现强制调用授权服务器自省端点验证令牌,你只需要把原来的JWT本地验证配置切换为**令牌自省(Introspection)**配置即可,Spring Security OAuth2资源服务器原生支持该能力,无需复杂自定义代码。
1. 修改YAML配置文件
将原配置中的spring.security.oauth2.resourceserver.jwt节点替换为introspection节点,配置自省端点URL、资源服务器专属的客户端ID和密钥(需提前在授权服务器创建对应客户端并赋予自省权限):
server: port: 8081 servlet: context-path: /resource-server-jwt spring: security: oauth2: resourceserver: introspection: uri: http://localhost:8083/auth/realms/rasool/protocol/openid-connect/token/introspect client-id: 你的资源服务器客户端ID client-secret: 你的资源服务器客户端密钥
2. 授权服务器端配置(以Keycloak为例)
- 在你的Keycloak realm(rasool)中创建一个新客户端,比如命名为
resource-server-client - 开启客户端的Service Accounts Enabled选项
- 在"Service Account Roles"页面,给该客户端添加
introspect-tokens权限(如需获取用户信息可额外添加view-users) - 记录该客户端的
Client ID和Client Secret,填入上面的配置文件
3. 验证逻辑说明
配置完成后,Spring Security会自动切换令牌验证逻辑:
- 资源服务器收到请求中的Bearer令牌后,不再本地解析验证JWT签名
- 直接将令牌发送到配置的自省端点,由授权服务器完成令牌有效性、过期时间、关联权限等验证
- 授权服务器返回令牌元数据后,资源服务器基于该数据完成用户认证与授权
内容的提问来源于stack exchange,提问作者Rasool Ghafari
相关产品推荐
相关产品推荐

