2023-05-19 13:50 인증 소스 수정
This commit is contained in:
parent
b7f557e941
commit
b24e18b1a1
@ -55,7 +55,11 @@ public class CertifInterceptor implements HandlerInterceptor{
|
|||||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
{
|
|
||||||
|
String referer = ""; //URL referer 접속정보
|
||||||
|
String serverIp = ""; //접속 server IP
|
||||||
|
|
||||||
|
try{
|
||||||
String clientIp = null;
|
String clientIp = null;
|
||||||
boolean isIpInHeader = false;
|
boolean isIpInHeader = false;
|
||||||
|
|
||||||
@ -83,136 +87,98 @@ public class CertifInterceptor implements HandlerInterceptor{
|
|||||||
clientIp = request.getRemoteAddr();
|
clientIp = request.getRemoteAddr();
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println(clientIp);
|
serverIp = clientIp;
|
||||||
System.out.println(clientIp);
|
|
||||||
System.out.println(clientIp);
|
}catch(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
|
||||||
|
//내부 오류
|
||||||
|
this._jsonResult(response, HttpStatus.BAD_GATEWAY); //502
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
// URL 접속정보
|
|
||||||
String referer = request.getHeader("Referer");
|
|
||||||
//System.out.println("=====preHandle=5=apikey=refer="+referer);
|
|
||||||
|
|
||||||
String serverIp = request.getRemoteAddr();
|
|
||||||
System.out.println("request.getRemoteAddr()");
|
|
||||||
System.out.println(request.getRemoteAddr());
|
|
||||||
System.out.println(request.getRemoteHost());
|
|
||||||
System.out.println(request.getRemotePort());
|
|
||||||
System.out.println(request.getRemoteUser());
|
|
||||||
System.out.println("request.getRemoteAddr()");
|
|
||||||
|
|
||||||
//step0-1.log 남기기
|
//step0-1.log 남기기
|
||||||
//step0-2.IP 체크
|
//step0-2.IP 체크
|
||||||
{
|
try{
|
||||||
try{
|
referer = request.getHeader("Referer");
|
||||||
//step0-1.log 남기기
|
|
||||||
|
|
||||||
//ip
|
|
||||||
HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
|
|
||||||
String ip = req.getHeader("X-FORWARDED-FOR");
|
|
||||||
if (ip == null){ ip = req.getRemoteAddr();}
|
|
||||||
|
|
||||||
|
// hylee Builder 패턴으로 변경 => 20230516
|
||||||
|
LettnLoginLogVO lettnLoginLogVO =
|
||||||
|
new LettnLoginLogVO()
|
||||||
|
.builder()
|
||||||
|
.logId(idgenApiLogId.getNextStringId()) // idgen ID
|
||||||
|
.conectId(request.getParameter("mberId")) //사용자 ID
|
||||||
|
.userAt("U") //사용자 여부
|
||||||
|
//.conectIp(ip)
|
||||||
|
.conectIp(serverIp)
|
||||||
|
.deviceType(_isMobile(request) ? "M" : "P") //device type
|
||||||
|
.progrmFileNm("API") //program_nm, menuNm, menuNo - API 값 고정
|
||||||
|
.menuNm("API")
|
||||||
|
.menuNo("100")
|
||||||
|
.url(request.getRequestURI())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//IP 컬럼 길이를 늘려서 비교 조건 제거함 2023-04-05
|
||||||
// lettnLoginLogVO.setConectIp(ip);
|
if (lettnLoginLogVO.getUrl().length()>200){ //길이문제로 오류가 발생하는 경우도 처리하도록 수정
|
||||||
|
lettnLoginLogVO.setUrl(lettnLoginLogVO.getUrl().substring(0,199));
|
||||||
//사용자 여부
|
|
||||||
// lettnLoginLogVO.setUserAt("U");
|
|
||||||
|
|
||||||
//사용자 ID
|
|
||||||
// lettnLoginLogVO.setConectId(request.getParameter("mberId"));
|
|
||||||
|
|
||||||
//device type
|
|
||||||
// if(_isMobile(request)){
|
|
||||||
// lettnLoginLogVO.setDeviceType("M");
|
|
||||||
// }else{
|
|
||||||
// lettnLoginLogVO.setDeviceType("P");
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// lettnLoginLogVO.setProgrmFileNm("API");
|
|
||||||
// lettnLoginLogVO.setMenuNm("API");
|
|
||||||
// lettnLoginLogVO.setMenuNo("100");
|
|
||||||
|
|
||||||
//url
|
|
||||||
// lettnLoginLogVO.setUrl(request.getRequestURI());
|
|
||||||
|
|
||||||
// hylee Builder 패턴으로 변경 => 20230516
|
|
||||||
LettnLoginLogVO lettnLoginLogVO =
|
|
||||||
new LettnLoginLogVO()
|
|
||||||
.builder()
|
|
||||||
.logId(idgenApiLogId.getNextStringId()) // idgen ID
|
|
||||||
.conectId(request.getParameter("mberId")) //사용자 ID
|
|
||||||
.userAt("U") //사용자 여부
|
|
||||||
.conectIp(ip)
|
|
||||||
.deviceType(_isMobile(request) ? "M" : "P") //device type
|
|
||||||
.progrmFileNm("API") //program_nm, menuNm, menuNo - API 값 고정
|
|
||||||
.menuNm("API")
|
|
||||||
.menuNo("100")
|
|
||||||
.url(request.getRequestURI())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
//IP 컬럼 길이를 늘려서 비교 조건 제거함 2023-04-05
|
|
||||||
if (lettnLoginLogVO.getUrl().length()>200){ //길이문제로 오류가 발생하는 경우도 처리하도록 수정
|
|
||||||
lettnLoginLogVO.setUrl(lettnLoginLogVO.getUrl().substring(0,199));
|
|
||||||
}
|
|
||||||
|
|
||||||
// logId :: idgen 사용으로 수정 => 2023-04-25
|
|
||||||
// lettnLoginLogVO.setLogId(idgenApiLogId.getNextStringId());
|
|
||||||
lettnLoginLogService.insert(lettnLoginLogVO);
|
|
||||||
|
|
||||||
|
|
||||||
//step0-2.IP 체크
|
|
||||||
lettnLoginLogVO = lettnLoginLogService.selectIgnoreIpCnt(lettnLoginLogVO);
|
|
||||||
int i_ignoreCnt = lettnLoginLogVO.getCnt();
|
|
||||||
|
|
||||||
//IP 접근 제어
|
|
||||||
if (i_ignoreCnt>0) {
|
|
||||||
//제한 아이피인 경우는 화면 안나옴 처리
|
|
||||||
this._jsonResult(response, HttpStatus.FORBIDDEN);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}catch(Exception ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
|
|
||||||
//내부 오류
|
|
||||||
this._jsonResult(response, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
// logId :: idgen 사용으로 수정 => 2023-04-25
|
||||||
|
// lettnLoginLogVO.setLogId(idgenApiLogId.getNextStringId());
|
||||||
|
lettnLoginLogService.insert(lettnLoginLogVO);
|
||||||
|
|
||||||
|
|
||||||
|
//step0-2.IP 체크
|
||||||
|
lettnLoginLogVO = lettnLoginLogService.selectIgnoreIpCnt(lettnLoginLogVO);
|
||||||
|
int i_ignoreCnt = lettnLoginLogVO.getCnt();
|
||||||
|
|
||||||
|
//IP 접근 제어
|
||||||
|
if (i_ignoreCnt>0) {
|
||||||
|
//제한 아이피인 경우는 화면 안나옴 처리
|
||||||
|
this._jsonResult(response, HttpStatus.FORBIDDEN); //403
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
|
||||||
|
//내부 오류
|
||||||
|
this._jsonResult(response, HttpStatus.NETWORK_AUTHENTICATION_REQUIRED); //511
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//step1.키 검증 - accessKey & mberId 는 검증을 위한 필수값
|
//step1.키 검증 - accessKey & mberId 는 검증을 위한 필수값
|
||||||
{
|
try{
|
||||||
try{
|
//referer 값이 없으면 serverIP 값으로 대체한다.
|
||||||
// AccessKeyVO accessKeyVO = new AccessKeyVO();
|
if ("".equals(referer) || referer==null) {
|
||||||
// accessKeyVO.setAccessKey(request.getParameter("accessKey"));
|
referer = serverIp;
|
||||||
// accessKeyVO.setMberId(request.getParameter("mberId"));
|
}
|
||||||
// accessKeyVO.setCallInfo(referer);
|
|
||||||
|
// hylee Builder 패턴으로 변경 => 20230516
|
||||||
|
AccessKeyVO accessKeyVO = accessKeyService.selectRKey(
|
||||||
|
new AccessKeyVO().builder()
|
||||||
|
.accessKey(request.getParameter("accessKey"))
|
||||||
|
.mberId(request.getParameter("mberId"))
|
||||||
|
.callInfo(referer)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
|
//인증 실패
|
||||||
|
if (accessKeyVO ==null) {
|
||||||
|
|
||||||
// hylee Builder 패턴으로 변경 => 20230516
|
this._jsonResult(response, HttpStatus.UNAUTHORIZED); //401
|
||||||
AccessKeyVO accessKeyVO = accessKeyService.selectRKey(
|
|
||||||
new AccessKeyVO().builder()
|
|
||||||
.accessKey(request.getParameter("accessKey"))
|
|
||||||
.mberId(request.getParameter("mberId"))
|
|
||||||
.callInfo(referer)
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
//인증 실패
|
|
||||||
if (accessKeyVO ==null) {
|
|
||||||
|
|
||||||
this._jsonResult(response, HttpStatus.UNAUTHORIZED);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}catch(Exception ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
|
|
||||||
//내부 오류
|
|
||||||
this._jsonResult(response, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}catch(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
|
||||||
|
//내부 오류
|
||||||
|
this._jsonResult(response, HttpStatus.INTERNAL_SERVER_ERROR); //500
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user