diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/constants/AuthConstants.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/constants/AuthConstants.java index 95a7bbf..72e4573 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/constants/AuthConstants.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/constants/AuthConstants.java @@ -4,7 +4,7 @@ public class AuthConstants { private AuthConstants(){} public static final String ENV_DEV="dev"; - public static final String HEADER_TOKEN = "atoken"; + public static final String HEADER_TOKEN = "Authorization"; public static final String HEADER_TENANT_ID = "tenantId"; public static final String HEADER_SAAS_TENANT_ID = "saasTenantId"; diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/LegacyGuessMissedRsp.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/LegacyGuessMissedRsp.java index 7b2b97e..63302b3 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/LegacyGuessMissedRsp.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/LegacyGuessMissedRsp.java @@ -21,21 +21,21 @@ public class LegacyGuessMissedRsp { public static final String ST_NO_NEED = "__NO_NEED__"; public static final String ST_GUESS_FAILED = "__GUESS_FAILED__"; public static final String ST_GUESS_OK = "__GUESS_OK__"; + + private String guessSaasTenant = ST_NO_NEED; - private String guessSaasTenant; + private Long saasTenantId = 0L; - private Long saasTenantId; + private String guessTerminal = ST_NO_NEED; - private String guessTerminal; + private String newTerminal = ""; + + private String guessOU = ST_NO_NEED; - private String newTerminal; + private Long ouId = 0L; - private String guessOU; + private String guessWorkspace = ST_NO_NEED; - private Long ouId; - - private String guessWorkspace; - - private Long workspaceId; + private Long workspaceId = 0L; } diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/enums/EnvEnum.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/enums/EnvEnum.java index 03cf4bc..86041fa 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/enums/EnvEnum.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/enums/EnvEnum.java @@ -7,7 +7,7 @@ import lombok.Getter; @AllArgsConstructor public enum EnvEnum { // dev - DEV("dev", "http://dev-app.axzo.cn/pudge/webApi/oauth/apisix/authentication"), + DEV("dev", "http://127.0.0.1:10099/webApi/oauth/apisix/authentication"), // TEST TEST("TEST", "http://test-api.axzo.cn/pudge/webApi/oauth/apisix/authentication"), //TEST1 diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java index a577610..9e09b64 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java @@ -28,11 +28,11 @@ import cn.axzo.framework.auth.domain.UserInfo; import cn.axzo.framework.auth.domain.UserInfoMap; import cn.axzo.framework.auth.enums.EnvEnum; import cn.azxo.framework.common.logger.logback.PodNamespacePropertyDefiner; -import cn.azxo.framework.common.utils.StrUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.codec.Base64; import cn.hutool.core.lang.TypeReference; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpException; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONUtil; @@ -104,7 +104,7 @@ public class ContextInfoBuilderAspect { ContextInfo contextInfo = new ContextInfo(); fillContextInfoWithRequest(contextInfo, request); - String userinfoJson; + String authResultJson; // 本地运行 分两种情况 postMan/junit // 判断本地环境 if (getSystemProperties() == null) { @@ -113,17 +113,17 @@ public class ContextInfoBuilderAspect { // 硬逻辑 如果不携带token 可理解为junit测试 这里不覆盖 Userinfo的信息 return null; } - userinfoJson = getUserInfoFromPudge(contextInfo, request); + authResultJson = getUserInfoFromPudge(contextInfo, request); } else { // 走 apisix 获取的请求 String userJsonInfo = request.getHeader(AuthConstants.USER_INFO); AuthException.error(CharSequenceUtil.isNotEmpty(userJsonInfo), "do not have userinfo error , please check apisix config is correct"); // 转编码 - userinfoJson = Base64.decodeStr(userJsonInfo); + authResultJson = Base64.decodeStr(userJsonInfo); } - buildUserInfo(contextInfo, userinfoJson); + buildUserInfo(contextInfo, authResultJson); // 定制一些信息的处理 contextInfo.buildCustomInfoByRequest(request); @@ -180,7 +180,7 @@ public class ContextInfoBuilderAspect { req.setHeaderSaasTenantId(contextInfo.getSaasTenantId()); req.setHeaderTenantId(contextInfo.getTenantId()); req.setHeaderWorkspaceId(contextInfo.getWorkspaceId()); - req.setRequestParamProjectId(StrUtil.nullSafeParseLong(originalRequest.getParameter("projectId"))); + req.setRequestParamProjectId(nullSafeParseLong(originalRequest.getParameter("projectId"))); return JSONUtil.toJsonStr(req); } @@ -215,28 +215,34 @@ public class ContextInfoBuilderAspect { contextInfo.setToken(request.getHeader(AuthConstants.HEADER_TOKEN)); contextInfo.setTerminalInfo(new TerminalInfo(request.getHeader(AuthConstants.HEADER_TERMINAL))); - contextInfo.setTenantId(StrUtil.nullSafeParseLong(request.getHeader(AuthConstants.HEADER_TENANT_ID))); - contextInfo.setSaasTenantId(StrUtil.nullSafeParseLong(request.getHeader(AuthConstants.HEADER_SAAS_TENANT_ID))); - contextInfo.setOuId(StrUtil.nullSafeParseLong(request.getHeader(AuthConstants.HEADER_OU_ID))); - contextInfo.setWorkspaceId(StrUtil.nullSafeParseLong(request.getHeader(AuthConstants.HEADER_WORKSPACE_ID))); + contextInfo.setTenantId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_TENANT_ID))); + contextInfo.setSaasTenantId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_SAAS_TENANT_ID))); + contextInfo.setOuId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_OU_ID))); + contextInfo.setWorkspaceId(nullSafeParseLong(request.getHeader(AuthConstants.HEADER_WORKSPACE_ID))); contextInfo.setVisitTo(request.getHeader(AuthConstants.VISIT_TO)); } - public void buildUserInfo(ContextInfo contextInfo, String userJsonInfo) { + public void buildUserInfo(ContextInfo contextInfo, String authResultJson) { + log.info("buildUserInfo-->authResultJson:{},contextInfo:{}",authResultJson,JSONUtil.toJsonStr(contextInfo)); UserInfo userInfo = new UserInfo(); TypeReference> mapTypeReference = new TypeReference>() { }; - Map map = JSONUtil.toBean(userJsonInfo, mapTypeReference, false); + Map map = JSONUtil.toBean(authResultJson, mapTypeReference, false); + Map userinfoMap = JSONUtil.toBean((String) map.get("userinfo"), mapTypeReference, false); // 对bean进行封装属性 - BeanUtil.fillBeanWithMap(map, userInfo, false); + BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false); contextInfo.setUserInfo(userInfo); - fillLegacyGuess(contextInfo, map); + try { + fillLegacyGuess(contextInfo, userinfoMap); + } catch (Exception e) { + log.warn("fill legacy guess error for user identityId=" + userInfo.getIdentityId(), e); + } - contextInfo.buildCustomInfoByUserInfo(new UserInfoMap(map)); + contextInfo.buildCustomInfoByUserInfo(new UserInfoMap(userinfoMap)); } /** @@ -248,7 +254,13 @@ public class ContextInfoBuilderAspect { @Deprecated private void fillLegacyGuess(ContextInfo contextInfo, Map map) { LegacyGuessMissedRsp rsp = new LegacyGuessMissedRsp(); - BeanUtil.fillBeanWithMap((Map) map.get(LegacyGuessMissedRsp.MAP_KEY_FOR_RSP), rsp, false); + Map legacyGuessMap = (Map) map.get(LegacyGuessMissedRsp.MAP_KEY_FOR_RSP); + if (legacyGuessMap == null) { + log.warn("legacy guess map is null, ignore legacy guess. user identityId=%d", + contextInfo.getUserInfo().getIdentityId()); + return; + } + BeanUtil.fillBeanWithMap(legacyGuessMap, rsp, false); if (LegacyGuessMissedRsp.ST_GUESS_OK.equals(rsp.getGuessSaasTenant())) { contextInfo.setSaasTenantId(rsp.getSaasTenantId()); } @@ -264,4 +276,14 @@ public class ContextInfoBuilderAspect { } } + public static Long nullSafeParseLong(String input) { + if (input == null) + return 0L; + if ("".equals(input)) + return 0L; + if ("undefined".equals(input)) + return 0L; + return Long.valueOf(input); + } + } diff --git a/common-common/src/main/java/cn/azxo/framework/common/utils/StrUtil.java b/common-common/src/main/java/cn/azxo/framework/common/utils/StrUtil.java deleted file mode 100644 index b57743f..0000000 --- a/common-common/src/main/java/cn/azxo/framework/common/utils/StrUtil.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.azxo.framework.common.utils; - - -/** - * - * 原来的工具类名字太长了,我弄一个名字短一些的。 - * 把一些原来自己方便使用的小函数写几个在这里。 - * - * @author gaowei - * - */ -public abstract class StrUtil extends StringUtils { - public static String killNull(String input) { - if(input == null) - return ""; - return input; - } - - public static Long nullSafeParseLong(String input) { - if(input == null) - return 0L; - if("".equals(input)) - return 0L; - return Long.valueOf(input); - } -}