From ba15cf45ccf8109252b0c54e2a6a52fd2c0841e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Wed, 3 Jul 2024 21:00:50 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=92=E9=87=8D=E6=9E=84bearer=20token=20?= =?UTF-8?q?=E6=8A=BD=E5=8F=96=E8=BF=87=E7=A8=8B=EF=BC=8C=E5=B8=A6token=20?= =?UTF-8?q?=E5=B0=B1=E9=89=B4=E6=9D=83=EF=BC=8C=E5=8D=B3=E4=BD=BF=E6=98=AF?= =?UTF-8?q?=E6=9A=B4=E9=9C=B2=E7=9A=84=E7=AB=AF=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit ffafe70bef3777664cc87edd1c58436763930ca3) --- .../PigxResourceServerAutoConfiguration.java | 82 ++++++++++--------- .../PigxResourceServerConfiguration.java | 5 +- 2 files changed, 46 insertions(+), 41 deletions(-) diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java index 51950ee1d..bdf9b1f4e 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java @@ -23,6 +23,8 @@ import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService; import org.springframework.security.oauth2.server.resource.introspection.OpaqueTokenIntrospector; +import org.springframework.security.oauth2.server.resource.web.BearerTokenResolver; +import org.springframework.security.oauth2.server.resource.web.DefaultBearerTokenResolver; /** * @author lengleng @@ -32,45 +34,51 @@ import org.springframework.security.oauth2.server.resource.introspection.OpaqueT @EnableConfigurationProperties(PermitAllUrlProperties.class) public class PigxResourceServerAutoConfiguration { - /** - * 鉴权具体的实现逻辑 - * @return (#pms.xxx) - */ - @Bean("pms") - public PermissionService permissionService() { - return new PermissionService(); - } + /** + * 鉴权具体的实现逻辑 + * + * @return (#pms.xxx) + */ + @Bean("pms") + public PermissionService permissionService() { + return new PermissionService(); + } - /** - * 请求令牌的抽取逻辑 - * @param urlProperties 对外暴露的接口列表 - * @return BearerTokenExtractor - */ - @Bean - public PigxBearerTokenExtractor pigBearerTokenExtractor(PermitAllUrlProperties urlProperties) { - return new PigxBearerTokenExtractor(urlProperties); - } + /** + * 请求令牌的抽取逻辑 + * + * @return BearerTokenExtractor + */ + @Bean + public BearerTokenResolver pigBearerTokenExtractor() { + DefaultBearerTokenResolver defaultBearerTokenResolver = new DefaultBearerTokenResolver(); + defaultBearerTokenResolver.setAllowUriQueryParameter(true); + defaultBearerTokenResolver.setAllowFormEncodedBodyParameter(true); + return defaultBearerTokenResolver; + } - /** - * 资源服务器异常处理 - * @param objectMapper jackson 输出对象 - * @param securityMessageSource 自定义国际化处理器 - * @return ResourceAuthExceptionEntryPoint - */ - @Bean - public ResourceAuthExceptionEntryPoint resourceAuthExceptionEntryPoint(ObjectMapper objectMapper, - MessageSource securityMessageSource) { - return new ResourceAuthExceptionEntryPoint(objectMapper, securityMessageSource); - } + /** + * 资源服务器异常处理 + * + * @param objectMapper jackson 输出对象 + * @param securityMessageSource 自定义国际化处理器 + * @return ResourceAuthExceptionEntryPoint + */ + @Bean + public ResourceAuthExceptionEntryPoint resourceAuthExceptionEntryPoint(ObjectMapper objectMapper, + MessageSource securityMessageSource) { + return new ResourceAuthExceptionEntryPoint(objectMapper, securityMessageSource); + } - /** - * 资源服务器toke内省处理器 - * @param authorizationService token 存储实现 - * @return TokenIntrospector - */ - @Bean - public OpaqueTokenIntrospector opaqueTokenIntrospector(OAuth2AuthorizationService authorizationService) { - return new PigxCustomOpaqueTokenIntrospector(authorizationService); - } + /** + * 资源服务器toke内省处理器 + * + * @param authorizationService token 存储实现 + * @return TokenIntrospector + */ + @Bean + public OpaqueTokenIntrospector opaqueTokenIntrospector(OAuth2AuthorizationService authorizationService) { + return new PigxCustomOpaqueTokenIntrospector(authorizationService); + } } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java index ab73caf14..6dba398f5 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java @@ -46,8 +46,6 @@ public class PigxResourceServerConfiguration { private final PermitAllUrlProperties permitAllUrl; - private final PigxBearerTokenExtractor pigxBearerTokenExtractor; - private final OpaqueTokenIntrospector customOpaqueTokenIntrospector; @Bean @@ -65,8 +63,7 @@ public class PigxResourceServerConfiguration { .authenticated()) .oauth2ResourceServer( oauth2 -> oauth2.opaqueToken(token -> token.introspector(customOpaqueTokenIntrospector)) - .authenticationEntryPoint(resourceAuthExceptionEntryPoint) - .bearerTokenResolver(pigxBearerTokenExtractor)) + .authenticationEntryPoint(resourceAuthExceptionEntryPoint)) .headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable)) .csrf(AbstractHttpConfigurer::disable);