From fa3ec77225c230a44e107cd188d26e1d974d8029 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 05 一月 2024 15:59:43 +0800
Subject: [PATCH] 整合代码
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 84 insertions(+), 30 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 7008270..3b4a571 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
@@ -3,15 +3,16 @@
import com.alibaba.fastjson.JSON;
import com.vci.ubcs.code.entity.TokenUserObject;
import com.vci.ubcs.code.service.IPasswordFreeLoginService;
-import com.vci.ubcs.code.util.HttpUtils;
+import com.vci.ubcs.starter.util.HttpUtils;
+import com.vci.ubcs.system.cache.NacosConfigCache;
import io.jsonwebtoken.Claims;
+import lombok.extern.slf4j.Slf4j;
import org.apache.http.auth.AuthenticationException;
import org.springblade.core.jwt.JwtUtil;
import org.springblade.core.jwt.props.JwtProperties;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
@@ -31,7 +32,10 @@
import javax.servlet.http.HttpServletRequest;
import java.util.List;
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;
/**
@@ -40,17 +44,30 @@
* @date 2023/9/11 15:45
*/
@Service
+@Slf4j
public class PasswordFreeLoginServiceImpl implements IPasswordFreeLoginService {
// 閫氳繃鏈嶅姟娉ㄥ唽涓績鑾峰彇缃戝叧鐨勭鍙e彿
@Autowired
private DiscoveryClient discoveryClient;
+
// 閰嶇疆鐨勫厤瀵嗙櫥褰曠殑璐﹀彿鎵�灞炵殑绉熸埛id
- @Value("${password-free.pwd-free-tenant-id}")
- // 閰嶇疆鐨則oken鍦╮edis涓殑鐢熷瓨鏃堕棿
+ @Value("${password-free.pwd-free-tenant-id:000000}")
private String pwdFreeTenantId;
- @Value("${password-free.token-redis-expire}")
+
+ // 閰嶇疆鐨則oken鍦╮edis涓殑鐢熷瓨鏃堕棿
+ @Value("${password-free.token-redis-expire:36000}")
private Long tokenRedisExpire;
+
+ @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;
@@ -75,10 +92,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;
@@ -89,27 +108,8 @@
String token2 = JwtUtil.getToken(authToken);
BladeUser user = this.getUser(token2);
//涓嶅瓨鍦ㄥ氨璇锋眰
- if(Func.isEmpty(authToken) || Func.isEmpty(user)){
- // 鍏嶅瘑鐧诲綍鎺ュ彛鍦板潃
- String loginUrl = "http://localhost:"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token";
- // 璇锋眰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());
- }
+ if(Func.isEmpty(authToken) || Func.isEmpty(user) || !user.getTenantId().equals(NacosConfigCache.getAdminUserInfo().getTenantId())){
+ String responseBody = this.passwordFreeLogin(userName);
//鎷垮埌鍝嶅簲浣撳叾涓寘鍚玹oken,鐢╮equest涓殑ip鍦板潃浣滀负閿�硷紝灏唗oken瀛樺叆缂撳瓨
TokenUserObject tokenUserObject = null;
try {
@@ -124,10 +124,65 @@
token2 = JwtUtil.getToken(authToken);
user = this.getUser(token2);
}
-
//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 empCode
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public String ssoFreeLogin(String empCode) throws Exception {
+ if(Func.isBlank(empCode)){
+ throw new ServiceException("鏈幏鍙栧埌empCode鍙傛暟");
+ }
+ String enStr2;
+ try {
+ String enStr1 = aesDecrypt(empCode, secretKey);
+ enStr2 = aesDecrypt(enStr1, clientId);
+ }catch (Exception e){
+ throw new ServiceException("empCode鍙傛暟瑙e瘑澶辫触锛佸師鍥�:"+e.getMessage());
+ }
+ // 瑙e瘑
+ log.debug("鍗曠偣鐧诲綍鍙傛暟瑙e瘑鍚庯細"+enStr2);
+ String token = this.passwordFreeLogin(enStr2);
+ return token;
}
/**
@@ -211,6 +266,5 @@
return jwtProperties;
}
-
}
--
Gitblit v1.9.3