✨ Introducing new features.#1770 客户端认证异常统一,避免重定向至SSO 认证页面
This commit is contained in:
1 parent
1f5afb045b
commit
964bf540a8
2 files changed
+21
-11
No files matched your search
+7
-1
@@ -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
|
||||
|
||||
+14
-10
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user