From 52ffefd06e59cbd56c1a919972866592379cfed2 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期四, 21 九月 2023 11:27:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java | 103 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 76 insertions(+), 27 deletions(-) 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; } - } -- Gitblit v1.9.3