From 964bf540a828884636b01613dbb230e7a45c2765 Mon Sep 17 00:00:00 2001 From: pig777 Date: Fri, 4 Sep 2020 12:43:11 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.#1770?= =?UTF-8?q?=20=E5=AE=A2=E6=88=B7=E7=AB=AF=E8=AE=A4=E8=AF=81=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=BB=9F=E4=B8=80=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D?= =?UTF-8?q?=E5=AE=9A=E5=90=91=E8=87=B3SSO=20=E8=AE=A4=E8=AF=81=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/AuthorizationServerConfig.java | 8 ++++++- ... PigxCommenceAuthExceptionEntryPoint.java} | 24 +++++++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) rename pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/{ResourceAuthExceptionEntryPoint.java => PigxCommenceAuthExceptionEntryPoint.java} (77%) diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/AuthorizationServerConfig.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/AuthorizationServerConfig.java index f4d04a963..efd29d31e 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/AuthorizationServerConfig.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/AuthorizationServerConfig.java @@ -20,9 +20,11 @@ package com.pig4cloud.pigx.auth.config; import cn.hutool.core.util.StrUtil; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.auth.service.PigxRedisTokenStore; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.data.tenant.TenantContextHolder; +import com.pig4cloud.pigx.common.security.component.PigxCommenceAuthExceptionEntryPoint; import com.pig4cloud.pigx.common.security.component.PigxWebResponseExceptionTranslator; import lombok.AllArgsConstructor; import lombok.SneakyThrows; @@ -62,6 +64,8 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap private final TokenEnhancer pigxTokenEnhancer; + private final ObjectMapper objectMapper; + @Override @SneakyThrows public void configure(ClientDetailsServiceConfigurer clients) { @@ -70,7 +74,9 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap @Override public void configure(AuthorizationServerSecurityConfigurer oauthServer) { - oauthServer.allowFormAuthenticationForClients().checkTokenAccess("isAuthenticated()"); + oauthServer.allowFormAuthenticationForClients() + .authenticationEntryPoint(new PigxCommenceAuthExceptionEntryPoint(objectMapper)) + .checkTokenAccess("isAuthenticated()"); } @Override diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/ResourceAuthExceptionEntryPoint.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxCommenceAuthExceptionEntryPoint.java similarity index 77% rename from pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/ResourceAuthExceptionEntryPoint.java rename to pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxCommenceAuthExceptionEntryPoint.java index 2dc4de309..1df0f67d5 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/ResourceAuthExceptionEntryPoint.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxCommenceAuthExceptionEntryPoint.java @@ -21,14 +21,15 @@ import cn.hutool.http.HttpStatus; import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.security.util.PigxSecurityMessageSourceUtil; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; +import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.CredentialsExpiredException; import org.springframework.security.authentication.InsufficientAuthenticationException; import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.SpringSecurityMessageSource; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.stereotype.Component; @@ -36,10 +37,9 @@ import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; -import java.util.Locale; /** - * 客户端异常处理 {@link org.springframework.security.core.AuthenticationException } 不同细化异常处理 + * 异常处理 {@link org.springframework.security.core.AuthenticationException } 不同细化异常处理 * * @author lengleng * @date 2020-06-14 @@ -47,7 +47,7 @@ import java.util.Locale; @Slf4j @Component @AllArgsConstructor -public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint { +public class PigxCommenceAuthExceptionEntryPoint implements AuthenticationEntryPoint { private final ObjectMapper objectMapper; @@ -64,16 +64,20 @@ public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint if (authException instanceof CredentialsExpiredException || authException instanceof InsufficientAuthenticationException) { - String msg = SpringSecurityMessageSource.getAccessor().getMessage( - "AbstractUserDetailsAuthenticationProvider.credentialsExpired", authException.getMessage(), - Locale.CHINA); + String msg = PigxSecurityMessageSourceUtil.getAccessor().getMessage( + "AbstractUserDetailsAuthenticationProvider.credentialsExpired", authException.getMessage()); result.setMsg(msg); } if (authException instanceof UsernameNotFoundException) { - String msg = SpringSecurityMessageSource.getAccessor().getMessage( - "AbstractUserDetailsAuthenticationProvider.noopBindAccount", authException.getMessage(), - Locale.CHINA); + String msg = PigxSecurityMessageSourceUtil.getAccessor().getMessage( + "AbstractUserDetailsAuthenticationProvider.noopBindAccount", authException.getMessage()); + result.setMsg(msg); + } + + if (authException instanceof BadCredentialsException) { + String msg = PigxSecurityMessageSourceUtil.getAccessor().getMessage( + "AbstractUserDetailsAuthenticationProvider.badClientCredentials", authException.getMessage()); result.setMsg(msg); }