From 6bcbe72b43d6fa041d06878d1dae09a6d8903895 Mon Sep 17 00:00:00 2001
From: jack <jack.su@pollex.com.tw>
Date: 星期五, 11 八月 2023 16:19:02 +0800
Subject: [PATCH] [ADD] 為了解決滲透測試JWT token 登出未失效問題, 在登出後會需要建立黑名單並在filter中確定token是否非黑名單

---
 pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java |   41 +++++++++++++++++++++++------------------
 1 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java
index 30703dc..b1aeb62 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java
@@ -1,15 +1,10 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.business.service.ConsultantService;
-import com.pollex.pam.security.jwt.JWTFilter;
-import com.pollex.pam.security.jwt.TokenProvider;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CONSULTANT_LOGIN;
 
-import io.undertow.util.BadRequestException;
-
-import com.pollex.pam.business.security.token.EServiceAuthenticationToken;
-import com.pollex.pam.business.web.errors.OtpLoginFailException;
-import com.pollex.pam.business.web.vm.EServiceLoginVM;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,11 +22,14 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CONSULTANT_LOGIN;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
+import com.pollex.pam.business.security.token.EServiceAuthenticationToken;
+import com.pollex.pam.business.service.ConsultantService;
+import com.pollex.pam.business.service.util.AesUtil;
+import com.pollex.pam.business.web.errors.OtpLoginFailException;
+import com.pollex.pam.business.web.vm.EServiceLoginVM;
+import com.pollex.pam.security.jwt.JWTFilter;
+import com.pollex.pam.security.jwt.TokenProvider;
 
 @RestController
 @RequestMapping("/api/eService")
@@ -54,7 +52,14 @@
     public ResponseEntity<UserJWTController.JWTToken> authorize(
     		@RequestBody EServiceLoginVM eServiceLoginVM
     		, HttpServletResponse response, HttpServletRequest request,
-			@PathVariable String imgCode) throws BadRequestException {
+			@PathVariable String imgCode){
+    	
+    	
+    	String paswword = AesUtil.aesDecode(eServiceLoginVM.getPassword());
+    	if(!StringUtils.hasText(paswword)) {
+    		throw new OtpLoginFailException("撖Ⅳ閫�撖仃���");
+    	}
+    	
     	HttpSession session = request.getSession();
     	String sessionImpCode = (String) session.getAttribute("img_code");
     	
@@ -66,11 +71,11 @@
     	if(!imgCode.equals(sessionImpCode)) {
     		throw new OtpLoginFailException("撽�Ⅳ頛詨�隤�");
     	}
-    	session.setAttribute("img_code", null);
     	
-        EServiceAuthenticationToken authenticationToken = new EServiceAuthenticationToken(
+    	session.setAttribute("img_code", null);
+    	EServiceAuthenticationToken authenticationToken = new EServiceAuthenticationToken(
             eServiceLoginVM.getUsername(),
-            eServiceLoginVM.getPassword()
+            paswword
         );
 
         Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);

--
Gitblit v1.8.0