用途:把 Spring Boot 应用配置为 OAuth2 资源服务器,校验外部认证提供方(Keycloak、Auth0、Okta、Cognito)签发的 JWT,并从中提取用户身份、邮箱与角色。
主要能力:引入依赖 spring-boot-starter-oauth2-resource-server;通过 SecurityFilterChain 配置无状态会话、路径授权与 oauth2ResourceServer().jwt();用 JwtAuthenticationConverter 自定义权限声明名与前缀;在 application.yml 中配置 issuer-uri、jwk-set-uri、audiences;用 JwtClaimExtractor 提取 sub、email、realm_access.roles 等声明;控制器中通过 @AuthenticationPrincipal Jwt 或 JwtAuthenticationToken 获取当前用户;用 @PreAuthorize 结合 hasAuthority('SCOPE_...')、hasRole 及自定义安全 Bean 做方法级鉴权。
使用方式:添加上述依赖,编写 @Configuration @EnableWebSecurity @EnableMethodSecurity 配置类,按提供方填写 issuer-uri 等属性,再按需注入 JWT 声明。
限制与注意:scope 校验用 hasAuthority("SCOPE_admin") 而非 hasRole;务必配置 issuer-uri 校验以防令牌伪造;Keycloak 角色嵌套在 realm_access.roles 下;不要直接使用 getPrincipal(),应转为 Jwt 或使用 @AuthenticationPrincipal;资源服务器无需 userDetailsService Bean。资料未提供价格、平台与效果信息。