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