Browse Source

chore: 提供未绑定用户支持

master
wangxiang 2 years ago
parent
commit
b83fd20731
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 5
      kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/CommonConstants.java
  2. 35
      kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/enums/ExceptionEnum.java
  3. 5
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2ExceptionSerializer.java
  4. 35
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnConfiguredUserDataException.java
  5. 6
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java
  6. 9
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/ResourceAuthExceptionEntryPoint.java
  7. 5
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java
  8. 4
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java
  9. 1
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java

5
kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/CommonConstants.java

@ -40,11 +40,6 @@ public interface CommonConstants {
*/ */
String BACK_END_PROJECT = "kicc"; String BACK_END_PROJECT = "kicc";
/**
* 失败标记
*/
Integer FAIL = 1;
/** /**
* 当前页 * 当前页
*/ */

35
kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/enums/ExceptionEnum.java

@ -0,0 +1,35 @@
package com.cloud.kicc.common.core.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
*<p>
* API错误页面响应状态枚举
*</p>
*
* @Author: wangxiang4
* @Since: 2023/8/16
*/
@Getter
@RequiredArgsConstructor
public enum ExceptionEnum {
UNAUTHORIZED_ACCESS(401, "禁止访问"),
PAGE_NOT_ACCESS(403, "页面无法访问"),
PAGE_NOT_FOUND(404, "网页未找到"),
ERROR(500, "错误"),
NET_WORK_ERROR(10000, "前端Js错误"),
PAGE_NOT_DATA(10100, "无数据页面");
/**
* 状态
*/
private final int value;
/**
* 描述
*/
private final String description;
}

5
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2ExceptionSerializer.java

@ -1,7 +1,6 @@
package com.cloud.kicc.common.security.exception; package com.cloud.kicc.common.security.exception;
import com.cloud.kicc.common.core.constant.CommonConstants; import com.cloud.kicc.common.core.enums.ExceptionEnum;
import com.cloud.kicc.common.security.exception.KiccAuth2Exception;
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer; import com.fasterxml.jackson.databind.ser.std.StdSerializer;
@ -25,7 +24,7 @@ public class KiccAuth2ExceptionSerializer extends StdSerializer<KiccAuth2Excepti
@SneakyThrows @SneakyThrows
public void serialize(KiccAuth2Exception value, JsonGenerator gen, SerializerProvider provider) { public void serialize(KiccAuth2Exception value, JsonGenerator gen, SerializerProvider provider) {
gen.writeStartObject(); gen.writeStartObject();
gen.writeObjectField("code", CommonConstants.FAIL); gen.writeObjectField("code", ExceptionEnum.UNAUTHORIZED_ACCESS.getValue());
gen.writeStringField("msg", value.getMessage()); gen.writeStringField("msg", value.getMessage());
gen.writeStringField("data", value.getErrorCode()); gen.writeStringField("data", value.getErrorCode());
// 资源服务器会读取这个字段 // 资源服务器会读取这个字段

35
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnConfiguredUserDataException.java

@ -0,0 +1,35 @@
package com.cloud.kicc.common.security.exception;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.springframework.http.HttpStatus;
/**
*<p>
* 未配置用户数据
*</p>
*
* @Author: wangxiang4
* @Since: 2023/9/2
*/
@JsonSerialize(using = KiccAuth2ExceptionSerializer.class)
public class UnConfiguredUserDataException extends KiccAuth2Exception {
public UnConfiguredUserDataException(String msg) {
super(msg);
}
public UnConfiguredUserDataException(String msg, Throwable t) {
super(msg, t);
}
@Override
public String getOAuth2ErrorCode() {
return "un_configured_user_data";
}
@Override
public int getHttpErrorCode() {
return HttpStatus.NETWORK_AUTHENTICATION_REQUIRED.value();
}
}

6
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/KiccLocalResourceServerTokenServices.java

@ -7,7 +7,7 @@ import com.cloud.kicc.common.core.enums.CasSystemEnum;
import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule; import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule;
import com.cloud.kicc.common.data.entity.CasUser; import com.cloud.kicc.common.data.entity.CasUser;
import com.cloud.kicc.common.data.entity.KiccUser; import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.exception.SecurityCheckedException; import com.cloud.kicc.common.security.exception.UnConfiguredUserDataException;
import com.cloud.kicc.common.security.override.jackson2.SimpleGrantedAuthorityMixin; import com.cloud.kicc.common.security.override.jackson2.SimpleGrantedAuthorityMixin;
import com.cloud.kicc.system.api.feign.RemoteUserService; import com.cloud.kicc.system.api.feign.RemoteUserService;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
@ -64,7 +64,7 @@ public class KiccLocalResourceServerTokenServices implements ResourceServerToken
if (casUser.getExPrincipals().get(CasSystemEnum.KICC) == null) { if (casUser.getExPrincipals().get(CasSystemEnum.KICC) == null) {
R<KiccUser> result = remoteUserService.selectByCasUserId(casUser.getId()); R<KiccUser> result = remoteUserService.selectByCasUserId(casUser.getId());
if (result.getCode() != R.SUCCESS) { if (result.getCode() != R.SUCCESS) {
throw new SecurityCheckedException("找不到系统用户请联系您的系统管理员进行配置!"); throw new UnConfiguredUserDataException("System user not found Contact your system administrator for configuration!", null);
} }
KiccUser user = result.getData(); KiccUser user = result.getData();
@ -90,7 +90,7 @@ public class KiccLocalResourceServerTokenServices implements ResourceServerToken
// 覆盖casUser核心authorities // 覆盖casUser核心authorities
String str = casUser.getExPrincipals().get(CasSystemEnum.KICC); String str = casUser.getExPrincipals().get(CasSystemEnum.KICC);
if (!JSONUtil.isJson(str)) throw new RuntimeException("exPrincipals不是json字符串!"); if (!JSONUtil.isJson(str)) throw new UnConfiguredUserDataException("ExPrincipals not json strings!");
KiccUser kiccUser = new ObjectMapper() KiccUser kiccUser = new ObjectMapper()
.registerModule(new KiccJavaTimeModule()) .registerModule(new KiccJavaTimeModule())
.addMixIn(SimpleGrantedAuthority.class, SimpleGrantedAuthorityMixin.class) .addMixIn(SimpleGrantedAuthority.class, SimpleGrantedAuthorityMixin.class)

9
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exp/ResourceAuthExceptionEntryPoint.java

@ -3,6 +3,8 @@ package com.cloud.kicc.common.security.exp;
import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpStatus;
import com.cloud.kicc.common.core.constant.CommonConstants; import com.cloud.kicc.common.core.constant.CommonConstants;
import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.enums.ExceptionEnum;
import com.cloud.kicc.common.security.exception.UnConfiguredUserDataException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ -35,7 +37,7 @@ public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint
response.setCharacterEncoding(CommonConstants.UTF8); response.setCharacterEncoding(CommonConstants.UTF8);
response.setContentType(CommonConstants.CONTENT_TYPE); response.setContentType(CommonConstants.CONTENT_TYPE);
R<String> result = new R<>(); R<String> result = new R<>();
result.setCode(CommonConstants.FAIL); result.setCode(ExceptionEnum.UNAUTHORIZED_ACCESS.getValue());
response.setStatus(HttpStatus.HTTP_UNAUTHORIZED); response.setStatus(HttpStatus.HTTP_UNAUTHORIZED);
if (authException != null) { if (authException != null) {
result.setMsg("error"); result.setMsg("error");
@ -46,6 +48,11 @@ public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint
if (authException instanceof InsufficientAuthenticationException) { if (authException instanceof InsufficientAuthenticationException) {
response.setStatus(org.springframework.http.HttpStatus.FAILED_DEPENDENCY.value()); response.setStatus(org.springframework.http.HttpStatus.FAILED_DEPENDENCY.value());
result.setMsg("token expire"); result.setMsg("token expire");
// 未配置用户数据
if (authException.getCause() instanceof UnConfiguredUserDataException) {
result.setCode(ExceptionEnum.PAGE_NOT_DATA.getValue());
}
} }
PrintWriter printWriter = response.getWriter(); PrintWriter printWriter = response.getWriter();
printWriter.append(objectMapper.writeValueAsString(result)); printWriter.append(objectMapper.writeValueAsString(result));

5
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java

@ -65,6 +65,11 @@ public class KiccWebResponseExceptionTranslator implements WebResponseExceptionT
return handleOAuth2Exception(new SecurityCheckedException(ase.getMessage(), ase)); return handleOAuth2Exception(new SecurityCheckedException(ase.getMessage(), ase));
} }
ase = (UnConfiguredUserDataException) throwableAnalyzer.getFirstThrowableOfType(UnConfiguredUserDataException.class, causeChain);
if (ase != null) {
return handleOAuth2Exception(new UnConfiguredUserDataException(ase.getMessage(), ase));
}
ase = (OAuth2Exception) throwableAnalyzer.getFirstThrowableOfType(OAuth2Exception.class, causeChain); ase = (OAuth2Exception) throwableAnalyzer.getFirstThrowableOfType(OAuth2Exception.class, causeChain);
if (ase != null) { if (ase != null) {
return handleOAuth2Exception((OAuth2Exception) ase); return handleOAuth2Exception((OAuth2Exception) ase);

4
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java

@ -78,7 +78,9 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered {
user.getUpdateById(), user.getUpdateById(),
user.getUpdateByName(), user.getUpdateByName(),
user.getUpdateTime(), user.getUpdateTime(),
user.getRemarks() user.getRemarks(),
null,
user.getTenantId()
); );
} }

1
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java

@ -27,7 +27,6 @@ import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;

Loading…
Cancel
Save