From f2e4cb3916aec25a4a5117280a628fd57ba3f6a0 Mon Sep 17 00:00:00 2001 From: Gao Wei Date: Mon, 13 Jun 2022 00:48:43 +0800 Subject: [PATCH 1/8] =?UTF-8?q?LegacyGuessMissedRsp=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/domain/LegacyGuessMissedRsp.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) 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; } From 7e8228f2698660749734c19d232ae2aa77edda63 Mon Sep 17 00:00:00 2001 From: Gao Wei Date: Mon, 13 Jun 2022 11:39:25 +0800 Subject: [PATCH 2/8] fix nullSafeToLong --- .../service/ContextInfoBuilderAspect.java | 23 +++++++++++----- .../azxo/framework/common/utils/StrUtil.java | 26 ------------------- 2 files changed, 17 insertions(+), 32 deletions(-) delete mode 100644 common-common/src/main/java/cn/azxo/framework/common/utils/StrUtil.java 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..08e7265 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; @@ -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,10 +215,10 @@ 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)); } @@ -263,5 +263,16 @@ public class ContextInfoBuilderAspect { contextInfo.setOuId(rsp.getOuId()); } } + + 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); - } -} From 818c6835ed3edaa79ca2155ec64aafd417cfd983 Mon Sep 17 00:00:00 2001 From: zhangran Date: Mon, 13 Jun 2022 11:42:46 +0800 Subject: [PATCH 3/8] fix-axzo-auth-spring-boot-starter 1.1.5 --- axzo-auth-spring-boot-starter/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/axzo-auth-spring-boot-starter/pom.xml b/axzo-auth-spring-boot-starter/pom.xml index de32e79..139d673 100644 --- a/axzo-auth-spring-boot-starter/pom.xml +++ b/axzo-auth-spring-boot-starter/pom.xml @@ -10,7 +10,7 @@ cn.axzo.framework axzo-auth-spring-boot-starter - 1.1.4 + 1.1.5 axzo-auth-spring-boot-starter axzo-auth-spring-boot-starter From d7f7ebd569f0381c7276b779feb5f3aa5af6ef04 Mon Sep 17 00:00:00 2001 From: Gao Wei Date: Mon, 13 Jun 2022 11:58:44 +0800 Subject: [PATCH 4/8] change atoken to Authorization --- .../java/cn/axzo/framework/auth/constants/AuthConstants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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"; From d73a8766d140e6e1233290ceb06648c2e6b29b48 Mon Sep 17 00:00:00 2001 From: Gao Wei Date: Mon, 13 Jun 2022 15:08:02 +0800 Subject: [PATCH 5/8] userinfo map --> authResultMap --- .../service/ContextInfoBuilderAspect.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) 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 08e7265..c34c1f6 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 @@ -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); @@ -223,20 +223,21 @@ public class ContextInfoBuilderAspect { contextInfo.setVisitTo(request.getHeader(AuthConstants.VISIT_TO)); } - public void buildUserInfo(ContextInfo contextInfo, String userJsonInfo) { + public void buildUserInfo(ContextInfo contextInfo, String authResultJson) { UserInfo userInfo = new UserInfo(); TypeReference> mapTypeReference = new TypeReference>() { }; - Map map = JSONUtil.toBean(userJsonInfo, mapTypeReference, false); - + Map map = JSONUtil.toBean(authResultJson, mapTypeReference, false); + Map userinfoMap = (Map)map.get("userinfo"); + // 对bean进行封装属性 - BeanUtil.fillBeanWithMap(map, userInfo, false); + BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false); contextInfo.setUserInfo(userInfo); - fillLegacyGuess(contextInfo, map); + fillLegacyGuess(contextInfo, userinfoMap); - contextInfo.buildCustomInfoByUserInfo(new UserInfoMap(map)); + contextInfo.buildCustomInfoByUserInfo(new UserInfoMap(userinfoMap)); } /** From 34d54803d4d7770ea9b5c6bdabf91bb7f5e0d736 Mon Sep 17 00:00:00 2001 From: Gao Wei Date: Mon, 13 Jun 2022 15:15:13 +0800 Subject: [PATCH 6/8] str --- .../axzo/framework/auth/service/ContextInfoBuilderAspect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c34c1f6..bebf4ea 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 @@ -228,7 +228,7 @@ public class ContextInfoBuilderAspect { TypeReference> mapTypeReference = new TypeReference>() { }; Map map = JSONUtil.toBean(authResultJson, mapTypeReference, false); - Map userinfoMap = (Map)map.get("userinfo"); + Map userinfoMap = JSONUtil.toBean((String)map.get("userinfo"), mapTypeReference, false); // 对bean进行封装属性 BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false); From bb523b00256a78fbebc22af546c2d775fffed030 Mon Sep 17 00:00:00 2001 From: Gao Wei Date: Mon, 13 Jun 2022 18:40:55 +0800 Subject: [PATCH 7/8] fix a nullpointer exception --- .../service/ContextInfoBuilderAspect.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) 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 bebf4ea..267f374 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 @@ -228,14 +228,18 @@ public class ContextInfoBuilderAspect { TypeReference> mapTypeReference = new TypeReference>() { }; Map map = JSONUtil.toBean(authResultJson, mapTypeReference, false); - Map userinfoMap = JSONUtil.toBean((String)map.get("userinfo"), mapTypeReference, false); - + Map userinfoMap = JSONUtil.toBean((String) map.get("userinfo"), mapTypeReference, false); + // 对bean进行封装属性 BeanUtil.fillBeanWithMap(userinfoMap, userInfo, false); contextInfo.setUserInfo(userInfo); - fillLegacyGuess(contextInfo, userinfoMap); + try { + fillLegacyGuess(contextInfo, userinfoMap); + } catch (Exception e) { + log.warn("fill legacy guess error for user identityId=" + userInfo.getIdentityId(), e); + } contextInfo.buildCustomInfoByUserInfo(new UserInfoMap(userinfoMap)); } @@ -249,7 +253,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,16 +274,15 @@ public class ContextInfoBuilderAspect { contextInfo.setOuId(rsp.getOuId()); } } - + public static Long nullSafeParseLong(String input) { - if(input == null) + if (input == null) return 0L; - if("".equals(input)) + if ("".equals(input)) return 0L; - if("undefined".equals(input)) + if ("undefined".equals(input)) return 0L; return Long.valueOf(input); } - } From 6fc2f09e28a17d0b44d80dcd5302ca969c5298e1 Mon Sep 17 00:00:00 2001 From: liuchuntao Date: Mon, 13 Jun 2022 19:13:25 +0800 Subject: [PATCH 8/8] bug fix --- axzo-auth-spring-boot-starter/pom.xml | 2 +- .../src/main/java/cn/axzo/framework/auth/enums/EnvEnum.java | 2 +- .../axzo/framework/auth/service/ContextInfoBuilderAspect.java | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/axzo-auth-spring-boot-starter/pom.xml b/axzo-auth-spring-boot-starter/pom.xml index 139d673..a2ffe32 100644 --- a/axzo-auth-spring-boot-starter/pom.xml +++ b/axzo-auth-spring-boot-starter/pom.xml @@ -10,7 +10,7 @@ cn.axzo.framework axzo-auth-spring-boot-starter - 1.1.5 + 1.1.5-SNAPSHOT axzo-auth-spring-boot-starter axzo-auth-spring-boot-starter 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 267f374..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 @@ -224,6 +224,7 @@ public class ContextInfoBuilderAspect { } public void buildUserInfo(ContextInfo contextInfo, String authResultJson) { + log.info("buildUserInfo-->authResultJson:{},contextInfo:{}",authResultJson,JSONUtil.toJsonStr(contextInfo)); UserInfo userInfo = new UserInfo(); TypeReference> mapTypeReference = new TypeReference>() { };