From bfdb7930b76669cc30b5494a42d61b7fb7859924 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 21 九月 2023 08:48:30 +0800 Subject: [PATCH] 代码提交 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 10 +- Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/AESUtils.java | 52 +++++++++++++ Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java | 3 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IPasswordFreeLoginService.java | 24 +++++ Source/UBCS-WEB/src/views/system/user.vue | 2 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java | 103 +++++++++++++++++++------ Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java | 16 ---- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java | 30 +++++++ 8 files changed, 185 insertions(+), 55 deletions(-) diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue index c03acfa..ba45302 100644 --- a/Source/UBCS-WEB/src/views/system/user.vue +++ b/Source/UBCS-WEB/src/views/system/user.vue @@ -404,6 +404,7 @@ { label: '瀵嗙爜', prop: 'password', + type: "password", hide: true, editDisplay: false, viewDisplay: false, @@ -413,6 +414,7 @@ label: '纭瀵嗙爜', prop: 'password2', hide: true, + type: "password", editDisplay: false, viewDisplay: false, rules: [{required: true, validator: validatePass2, trigger: 'blur'}] diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java index e65b6aa..7b92db7 100644 --- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java +++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeSocialEndpoint.java @@ -62,22 +62,6 @@ } /** - * 涓嶰A绯荤粺鐨勫崟鐐圭櫥褰� - */ - @GetMapping("/oauth/oasso") - public ModelAndView require(HttpServletRequest request, ModelAndView model) { - // 1銆佹嬁鍒扮敤鎴风殑閴存潈淇℃伅 - String userName = request.getParameter("username"); - // 2銆佽皟鐢ㄩ壌鏉冪櫥褰曟帴鍙o紝杩欓噷閲囩敤鎺堟潈鐮佹ā寮� - // 3銆佹瀯寤鸿姹傚湴鍧�锛� - //HttpUtils.post(); - - model.setViewName("login"); - return model; - } - - - /** * 鑾峰彇璁よ瘉淇℃伅 */ @RequestMapping("/oauth/callback/{source}") diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/AESUtils.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/AESUtils.java new file mode 100644 index 0000000..4e4f079 --- /dev/null +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/AESUtils.java @@ -0,0 +1,52 @@ +package com.vci.ubcs.starter.util; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.util.Base64; + +/** + * @author ludc + * @date 2023/9/20 11:08 + */ +public class AESUtils { + + /** + * aes鍔犲瘑 + * @param content 寰呭姞瀵嗘暟鎹� + * @param key 瀵嗛挜 + * @return + * @throws Exception + */ + public static String aesEncrypt(String content, String key) throws Exception { + //鎸囧畾鍔犲瘑绠楁硶 + Cipher cipher = Cipher.getInstance("AES"); + //鍒涘缓鍔犲瘑瑙勫垯锛氭寚瀹歬ey鍜屽姞瀵嗙被鍨� + SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES"); + //鎸囧畾鍔犲瘑妯″紡涓哄姞瀵嗭紝鎸囧畾鍔犲瘑瑙勫垯 + cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); + //璋冪敤鍔犲瘑鏂规硶 + byte[] result = cipher.doFinal(content.getBytes()); + //鐢˙ase64缂栫爜 + return new String(Base64.getEncoder().encode(result)); + } + + /** + * aes瑙e瘑 + * @param content 寰呰В瀵嗘暟鎹� + * @param key 瀵嗛挜 + * @return + * @throws Exception + */ + public static String aesDecrypt(String content, String key) throws Exception { + //Base64瑙g爜 + byte[] result = Base64.getDecoder().decode(content); + //鎸囧畾鍔犲瘑绠楁硶 + Cipher cipher = Cipher.getInstance("AES"); + //鍒涘缓鍔犲瘑瑙勫垯锛氭寚瀹歬ey鍜屽姞瀵嗙被鍨� + SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES"); + //鎸囧畾鍔犲瘑妯″紡涓鸿В瀵嗭紝鎸囧畾鍔犲瘑瑙勫垯 + cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); + return new String(cipher.doFinal(result)); + } + +} diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java index e24815c..f5ce8a2 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java @@ -658,7 +658,6 @@ return engineService.getFlowUIInfoByClassifyOid(codeClassifyOid,functionId,templateId,taskId,modelKey); } - @GetMapping("/thisistest") @ResponseBody public Integer thisistest(String codeClassifyOid, String functionId) throws Exception { @@ -726,7 +725,7 @@ * @param referConfigVO 鍙傜収鐨勯厤缃俊鎭� * @return 鎵ц鐨勭粨鏋� */ - @GetMapping("/defaultReferDataGrid") + @RequestMapping(value = "/defaultReferDataGrid",method = {RequestMethod.POST, RequestMethod.GET}) public IPage<BaseModelVO> defaultReferDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject){ return engineService.referDataGrid(referConfigVO,baseQueryObject); } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java index 0d10fee..d0cd358 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/PasswordFreeLoginController.java @@ -2,12 +2,18 @@ import com.vci.ubcs.code.service.IPasswordFreeLoginService; import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import static com.vci.ubcs.starter.util.AESUtils.aesDecrypt; +import static com.vci.ubcs.starter.util.AESUtils.aesEncrypt; /** * @author ludc @@ -16,20 +22,40 @@ @RestController @RequestMapping("/passwordFree") @Api(value = "鍏嶅瘑鐧诲綍鎺ュ彛", tags = "鍏嶅瘑鐧诲綍鎺ュ彛") +@Slf4j public class PasswordFreeLoginController { @Resource private IPasswordFreeLoginService passwordFreeLoginService; @PostMapping("/login") - public R passwordFreeLogin(@RequestParam String username, HttpServletRequest request) { + public R passwordFreeLogin(@RequestParam("userName") String username, HttpServletRequest request) { boolean status; try { - status = passwordFreeLoginService.passwordFreeLogin(username,request); + status = passwordFreeLoginService.pwdFreeLoginByBoolean(username,request); }catch (Exception e){ throw new ServiceException("鍏嶅瘑鐧诲綍鑾峰彇token澶辫触锛�"+e.getMessage()); } return R.status(status); } + /** + * 鍗曠偣鐧诲綍 + * @param request + * @return + * @throws Exception + */ + @GetMapping("/ssoLogin") + public ModelAndView oaSsoLogin(HttpServletRequest request, ModelAndView model){ + String token; + try { + token = passwordFreeLoginService.ssoFreeLogin(request); + }catch (Exception e){ + throw new ServiceException("鍗曠偣鐧诲綍鑾峰彇token澶辫触:"+e.getMessage()); + } + model.addObject("token",token); + model.setViewName("sso"); + return model; + } + } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IPasswordFreeLoginService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IPasswordFreeLoginService.java index b50482a..2957fea 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IPasswordFreeLoginService.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IPasswordFreeLoginService.java @@ -19,10 +19,28 @@ String getGatewayPort(String serviceId); /** - * 鍏嶅瘑鐧诲綍鏂规硶 + * 鍏嶅瘑鐧诲綍锛屾敼鍙樺綋鍓峸ebservice璇锋眰鐨刪eader * @param userName 璐﹀彿 - * @return + * @param servletRequest + * @return boolean + * @throws AuthenticationException */ - boolean passwordFreeLogin(String userName, ServletRequest request) throws AuthenticationException; + boolean pwdFreeLoginByBoolean(String userName, ServletRequest servletRequest) throws AuthenticationException; + + /** + * 鍏嶅瘑鐧诲綍璇锋眰鍙戦�� + * @param userName 璐﹀彿 + * @return 杩斿洖token + * @throws AuthenticationException + */ + String passwordFreeLogin(String userName) throws AuthenticationException; + + /** + * 鍗曠偣鐧诲綍 + * @param servletRequest + * @return + * @throws Exception + */ + String ssoFreeLogin(ServletRequest servletRequest) throws Exception; } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java index 69f5c13..752bf91 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java @@ -33,6 +33,8 @@ import java.util.Map; import java.util.logging.Logger; +import static com.vci.ubcs.starter.util.AESUtils.aesDecrypt; +import static com.vci.ubcs.starter.util.AESUtils.aesEncrypt; import static org.springblade.core.secure.utils.AuthUtil.parseJWT; /** @@ -47,14 +49,23 @@ // 閫氳繃鏈嶅姟娉ㄥ唽涓績鑾峰彇缃戝叧鐨勭鍙e彿 @Autowired private DiscoveryClient discoveryClient; + // 閰嶇疆鐨勫厤瀵嗙櫥褰曠殑璐﹀彿鎵�灞炵殑绉熸埛id - @Value("${password-free.pwd-free-tenant-id}") + @Value("${password-free.pwd-free-tenant-id:000000}") private String pwdFreeTenantId; + // 閰嶇疆鐨則oken鍦╮edis涓殑鐢熷瓨鏃堕棿 - @Value("${password-free.token-redis-expire}") + @Value("${password-free.token-redis-expire:36000}") private Long tokenRedisExpire; - @Value("${password-free.pwd-free-addr}") + + @Value("${password-free.pwd-free-addr:localhost}") private String pwdFreeAddr; + + @Value("${password-free.client-id:a104c4fd2f0e4958}") + private String clientId;//搴旂敤ID + + @Value("${password-free.secret-key:9fbd170bd83eb869}") + private String secretKey;//搴旂敤绉橀挜 @Autowired private BladeRedis bladeRedis; @@ -79,10 +90,12 @@ /** * 鍏嶅瘑鐧诲綍锛屾敼鍙樺綋鍓峸ebservice璇锋眰鐨刪eader * @param userName 璐﹀彿 - * @return + * @param servletRequest + * @return boolean + * @throws AuthenticationException */ @Override - public boolean passwordFreeLogin(String userName, ServletRequest servletRequest) throws AuthenticationException { + public boolean pwdFreeLoginByBoolean(String userName, ServletRequest servletRequest) throws AuthenticationException { //杩涙潵鍏堝垽鏂紦瀛樹腑鏄惁瀛樺湪token // 璇锋眰鏉ヨ嚜宸卞摢涓猧p鍦板潃 HttpServletRequest request = (HttpServletRequest) servletRequest; @@ -94,27 +107,7 @@ BladeUser user = this.getUser(token2); //涓嶅瓨鍦ㄥ氨璇锋眰 if(Func.isEmpty(authToken) || Func.isEmpty(user)){ - // 鍏嶅瘑鐧诲綍鎺ュ彛鍦板潃 - String loginUrl = "http://"+pwdFreeAddr+":"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token"; - log.debug("褰撳墠鍏嶅瘑鐧诲綍璋冪敤鍦板潃锛�"+loginUrl); - // 璇锋眰ubcs-auth鏈嶅姟鑾峰彇token锛屽厛璁剧疆璇锋眰澶� - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - headers.set("Authorization", "Basic c3dvcmQ6c3dvcmRfc2VjcmV0"); - headers.set("Tenant-Id", pwdFreeTenantId); - //璁剧疆璇锋眰浣撳弬鏁� - MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>(); - parameters.add("username",userName); - parameters.add("grant_type", "passwordfree"); - parameters.add("scope", "all"); - parameters.add("type", "account"); - String responseBody = null; - try { - // 鍙戦�丳OST璇锋眰 - responseBody = HttpUtils.post(loginUrl, parameters,headers); - }catch (Exception e){ - throw new AuthenticationException("璋冪敤閴存潈鏈嶅姟ubcs-auth澶辫触锛屽師鍥狅細"+e.getMessage()); - } + String responseBody = this.passwordFreeLogin(userName); //鎷垮埌鍝嶅簲浣撳叾涓寘鍚玹oken,鐢╮equest涓殑ip鍦板潃浣滀负閿�硷紝灏唗oken瀛樺叆缂撳瓨 TokenUserObject tokenUserObject = null; try { @@ -132,6 +125,63 @@ //request.setAttribute("Blade-Auth",token); request.setAttribute("_BLADE_USER_REQUEST_ATTR_",user); return true; + } + + /** + * 鍏嶅瘑鐧诲綍璇锋眰鍙戦�� + * @param userName 璐﹀彿 + * @return 杩斿洖token + * @throws AuthenticationException + */ + @Override + public String passwordFreeLogin(String userName) throws AuthenticationException { + // 鍏嶅瘑鐧诲綍鎺ュ彛鍦板潃 + String loginUrl = "http://"+pwdFreeAddr+":"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token"; + log.debug("褰撳墠鍏嶅瘑鐧诲綍璋冪敤鍦板潃锛�"+loginUrl); + // 璇锋眰ubcs-auth鏈嶅姟鑾峰彇token锛屽厛璁剧疆璇锋眰澶� + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.set("Authorization", "Basic c3dvcmQ6c3dvcmRfc2VjcmV0"); + headers.set("Tenant-Id", pwdFreeTenantId); + //璁剧疆璇锋眰浣撳弬鏁� + MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>(); + parameters.add("username",userName); + parameters.add("grant_type", "passwordfree"); + parameters.add("scope", "all"); + parameters.add("type", "account"); + String responseBody = null; + try { + // 鍙戦�丳OST璇锋眰 + responseBody = HttpUtils.post(loginUrl, parameters,headers); + }catch (Exception e){ + throw new AuthenticationException("璋冪敤閴存潈鏈嶅姟ubcs-auth澶辫触锛屽師鍥狅細"+e.getMessage()); + } + return responseBody; + } + + /** + * 鍗曠偣鐧诲綍 + * @param servletRequest + * @return + * @throws Exception + */ + @Override + public String ssoFreeLogin(ServletRequest servletRequest) throws Exception { + HttpServletRequest request = (HttpServletRequest) servletRequest; + String content = request.getHeader("empCode"); + if(Func.isBlank(content)){ + throw new ServiceException("鏈幏鍙栧埌empCode鍙傛暟"); + } + //鍔犲瘑 + String str1 = aesEncrypt(content, clientId); + String str2 = aesEncrypt(str1, secretKey); + + String enStr1 = aesDecrypt(str2, secretKey); + String enStr2 = aesDecrypt(enStr1, clientId); + // 瑙e瘑 + log.debug("鍗曠偣鐧诲綍鍙傛暟瑙e瘑鍚庯細"+enStr2); + String token = this.passwordFreeLogin("pwdfree"); + return token; } /** @@ -215,6 +265,5 @@ return jwtProperties; } - } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java index 31b61e1..132d2fd 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java @@ -237,7 +237,7 @@ systemId = interParameterVO.getData().getSystemId(); UserVO userVo = interParameterVO.getData().getUser(); //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� - passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); AuthUtil.getUser(); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; @@ -975,7 +975,7 @@ systemId = interParameterVO.getData().getSystemId(); UserVO userVo = interParameterVO.getData().getUser(); //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� - passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; //杩欐槸璐﹀彿淇℃伅 @@ -1148,7 +1148,7 @@ QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� - passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); systemId=queryData.getSystemId(); QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); @@ -1308,7 +1308,7 @@ systemId=condtionsVO.getSystemId(); UserVO userVo=condtionsVO.getUser(); //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� - passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); CondtionVO condtionVO= condtionsVO.getCondtion(); SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); @@ -1523,7 +1523,7 @@ QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� - passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); systemId=queryData.getSystemId(); QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); -- Gitblit v1.9.3