diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java index aa6f11b..375f107 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java @@ -16,7 +16,10 @@ import shkd.sys.sys.utils.AesUtils; import javax.servlet.http.*; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.security.PrivateKey; +import java.util.Base64; /** @@ -44,7 +47,7 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { String secret; String queryUrl = httpServletRequest.getQueryString(); - String redirect = "http://10.1.7.83:8022/ierp/integration/yzjShareOpen.do?"+queryUrl; + if (queryUrl.contains("isNew")) { ip = EOSS_IP2; client = CLIENT_ID2; @@ -54,29 +57,39 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { client = CLIENT_ID; secret = CLIENT_SECRET; } - //认证中心的登录地址 - logger.info(String.format("eoss_ip:%s,client_id:%s,client_secret:%s,重定向地址:%s", ip, client, secret, s)); - try { + if(queryUrl.contains("code")){ +// httpServletResponse.sendRedirect(ssourl); + + + }else{ + queryUrl = Base64.getEncoder().encodeToString(queryUrl.getBytes(StandardCharsets.UTF_8)); +// String skIp = httpServletRequest.getRemoteAddr(); + String skUrl = httpServletRequest.getRequestURL().toString(); + skUrl = skUrl.substring(0, skUrl.indexOf("ierp")); + String redirect = skUrl+"ierp/index.html?param="+queryUrl; + //认证中心的登录地址 + logger.info(String.format("eoss_ip:%s,client_id:%s,client_secret:%s,重定向地址:%s", ip, client, secret, s)); String ssourl = ip + "/service/SGE-project-sctz-master/pc/dist/login.html"; - if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) { - String userName = UserServiceHelper.getCurrentUser("name").getString("name"); - DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion"); - String userKey = "user_sessionId_" + userName; // 构造一个唯一的键 - String sessionId = cache.get(userKey); - if (sessionId != null) { - AuthService.logout(ip, sessionId); + + try { + if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) { + String userName = UserServiceHelper.getCurrentUser("name").getString("name"); + DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion"); + String userKey = "user_sessionId_" + userName; // 构造一个唯一的键 + String sessionId = cache.get(userKey); + if (sessionId != null) { + AuthService.logout(ip, sessionId); + } + } else { + //重定向的统一认证的地址 获取授权码 + ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=false&authType=0&redirect_uri=%s", + ip, client, redirect); + logger.info(String.format("重定向地址→sendRedirect:%s", ssourl)); } - } else { - /* - *重定向的统一认证的地址 获取授权码 - */ - ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&authType=0&redirect_uri=%s", - ip, client, s); - logger.info(String.format("重定向地址→sendRedirect:%s", ssourl)); + httpServletResponse.sendRedirect(ssourl); + } catch (IOException e) { + throw new RuntimeException(e); } - httpServletResponse.sendRedirect(ssourl); - } catch (IOException e) { - throw new RuntimeException(e); } } @@ -98,22 +111,37 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { client = CLIENT_ID; secret = CLIENT_SECRET; } + //返回的认证结果 UserAuthResult result = new UserAuthResult(); //获取返回的授权码 String code = httpServletRequest.getParameter("code"); - //获取返回的 sessionId - String sessionId = httpServletRequest.getParameter("sessionId"); - String userName = httpServletRequest.getParameter("userName"); - if (userName != null) { - userName = userName.replace(" ", "+"); // 将空格替换为 + 号 + String param = httpServletRequest.getParameter("param"); + if(param!=null){ + byte[] decodedBytes = Base64.getDecoder().decode(param); + String paramString = new String(decodedBytes, StandardCharsets.UTF_8); + try { + httpServletResponse.sendRedirect(httpServletRequest.getRequestURI()+"?"+paramString+"&code="+code); + } catch (IOException e) { + throw new RuntimeException(e); + } + result.setSucess(false); + return result; } - logger.info("获取待办链接中参数userName:" + userName); + + +// //获取返回的 sessionId +// String sessionId = httpServletRequest.getParameter("sessionId"); +// String userName = httpServletRequest.getParameter("userName"); +// if (userName != null) { +// userName = userName.replace(" ", "+"); // 将空格替换为 + 号 +// } +// logger.info("获取待办链接中参数userName:" + userName); // RSAUtils. logger.info(String.format("getTrdSSOAuth→授权码code:%s", code)); result.setUserType(UserProperType.UserName); - if (StringUtils.isEmpty(code) && StringUtils.isEmpty(userName)) { + if (StringUtils.isEmpty(code)) { logger.error("getTrdSSOAuth→授权码code为空"); result.setSucess(false); return result;