2025-09-10 프로젝트 암호화 적용

This commit is contained in:
myname 2025-09-10 09:47:02 +09:00
parent 499ac7ffeb
commit dcf9c340c2
24 changed files with 598 additions and 251 deletions

View File

@ -28,6 +28,7 @@ import java.util.HashMap;
import java.util.regex.Pattern;
import kcc.let.utl.sim.service.EgovFileScrty;
import kcc.let.utl.sim.service.EgovNewPasswordUtil;
public class StringUtil {
@ -416,6 +417,8 @@ public class StringUtil {
public static void main(String args[]) {
try {
System.out.print(EgovFileScrty.encryptPassword("1", "kcctest"));
System.out.print(EgovNewPasswordUtil.hashPassword("1"));
} catch (Exception e) {
System.out.println("Main Exception Error");
}

View File

@ -14,7 +14,7 @@ import org.springframework.web.servlet.ModelAndView;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.CertUtil;
import kcc.let.utl.sim.service.EgovFileScrty;
import kcc.let.utl.sim.service.EgovNewPasswordUtil;
@Controller
public class CertController {
@ -95,7 +95,9 @@ public class CertController {
//3.오류시 문구
s_message = retMap.get("sResult").toString();
sn = EgovFileScrty.encryptPassword(s_SN,membSeq);
//sn = EgovFileScrty.encryptPassword(s_SN,membSeq);
sn = EgovNewPasswordUtil.hashPassword(s_SN);
}catch(Exception ex) {
System.out.println("Exception Occured!!!");

View File

@ -12,9 +12,12 @@ import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import kcc.com.cmm.LoginVO;
import kcc.let.uat.uia.service.EgovLoginService;
import kcc.let.uss.umt.service.EgovUserManageService;
import kcc.let.uss.umt.service.UserManageVO;
import kcc.let.utl.fcc.service.EgovNumberUtil;
import kcc.let.utl.fcc.service.EgovStringUtil;
import kcc.let.utl.sim.service.EgovFileScrty;
import kcc.let.utl.sim.service.EgovNewPasswordUtil;
/**
* 일반 로그인, 인증서 로그인을 처리하는 비즈니스 구현 클래스
@ -40,6 +43,10 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
@Resource(name="loginDAO")
private LoginDAO loginDAO;
/** userManageService */
@Resource(name = "userManageService")
private EgovUserManageService userManageService;
///** EgovSndngMailRegistService */
//@Resource(name = "sndngMailRegistService")
//private EgovSndngMailRegistService sndngMailRegistService;
@ -53,19 +60,75 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
*/
@Override
public LoginVO actionLogin(LoginVO vo) throws Exception {
//step1.new 로그인인 경우 loginvo ret
//step2.legacy 로그인인 경우 new password로 업데이트 loginvo ret
//step3.둘다 아니면 loginvo ret
LoginVO loginVO = null;
String s_password = vo.getPassword();
System.out.println("======1========================"+s_password);
System.out.println("======1========================"+EgovNewPasswordUtil.hashPassword(s_password));
System.out.println("======1========================"+EgovFileScrty.encryptPassword(s_password, vo.getId()));
//step1.new 로그인인 경우 loginvo ret
//최고관리자를 제외한 사용자 sso 로그인으로 비밀번호 암호화 삭제(210818, 이준호)
// 1. 입력한 비밀번호를 암호화한다.
if("USR".equals(vo.getUserSe())) {
String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
//String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
String enpassword = EgovNewPasswordUtil.hashPassword(s_password);
vo.setPassword(enpassword);
}
System.out.println("======2========================"+s_password);
// 2. 아이디와 암호화된 비밀번호가 DB와 일치하는지 확인한다.
LoginVO loginVO = loginDAO.actionLogin(vo);
loginVO = loginDAO.actionLoginNew(vo);
System.out.println("======3========================"+s_password);
System.out.println("======3========================"+loginVO.getPassword());
if (EgovNewPasswordUtil.matches(s_password, loginVO.getPassword())) {
return loginVO;
}
/*
loginVO = loginDAO.actionLogin(vo);
// 3. 결과를 리턴한다.
if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) {
return loginVO;
}
*/
System.out.println("======4========================"+s_password);
//step2.legacy 로그인인 경우 new password로 업데이트 loginvo ret
//최고관리자를 제외한 사용자 sso 로그인으로 비밀번호 암호화 삭제(210818, 이준호)
// 1. 입력한 비밀번호를 암호화한다.
if("USR".equals(vo.getUserSe())) {
String enpassword = EgovFileScrty.encryptPassword(s_password, vo.getId());
//String enpassword = EgovNewPasswordUtil.hashPassword(vo.getPassword());
vo.setPassword(enpassword);
}
System.out.println("======5========================"+s_password);
// 2. 아이디와 암호화된 비밀번호가 DB와 일치하는지 확인한다.
loginVO = loginDAO.actionLogin(vo);
System.out.println("======6========================"+s_password);
// 3. 결과를 리턴한다.
if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) {
//패스워드를 newpassword로 변경
UserManageVO userManageVO = new UserManageVO();
userManageVO.setUniqId(vo.getId());
userManageVO.setPassword(EgovNewPasswordUtil.hashPassword(s_password)); //입력한 비밀번호 암호화
userManageService.updatePasswordR(userManageVO);
System.out.println("======7========================"+s_password);
/*
PASSWORD = #password#
WHERE ESNTL_ID = #uniqId#
*/
return loginVO;
} else {
loginVO = new LoginVO();
@ -80,7 +143,8 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
//최고관리자를 제외한 사용자 sso 로그인으로 비밀번호 암호화 삭제(210818, 이준호)
// 1. 입력한 비밀번호를 암호화한다.
if("USR".equals(vo.getUserSe())) {
String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
//String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
String enpassword = EgovNewPasswordUtil.hashPassword(vo.getPassword());
vo.setPassword(enpassword);
}
@ -193,7 +257,8 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
// 3. 임시 비밀번호를 암호화하여 DB에 저장한다.
LoginVO pwVO = new LoginVO();
String enpassword = EgovFileScrty.encryptPassword(newpassword, vo.getId());
//String enpassword = EgovFileScrty.encryptPassword(newpassword, vo.getId());
String enpassword = EgovNewPasswordUtil.hashPassword(newpassword);
pwVO.setId(vo.getId());
pwVO.setPassword(enpassword);
pwVO.setUserSe(vo.getUserSe());
@ -220,7 +285,8 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
@Override
public LoginVO siteActionLogin(LoginVO vo) throws Exception {
// 1. 입력한 비밀번호를 암호화한다.
String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
//String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
String enpassword = EgovNewPasswordUtil.hashPassword(vo.getPassword());
vo.setPassword(enpassword);
// 2. 아이디와 암호화된 비밀번호가 DB와 일치하는지 확인한다.
@ -298,7 +364,8 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
//최고관리자를 제외한 사용자 sso 로그인으로 비밀번호 암호화 삭제(210818, 이준호)
// 1. 입력한 비밀번호를 암호화한다.
if("USR".equals(vo.getUserSe())) {
String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
//String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
String enpassword = EgovNewPasswordUtil.hashPassword(vo.getPassword());
vo.setPassword(enpassword);
}

View File

@ -15,7 +15,7 @@ import kcc.let.uss.umt.service.EgovMberManageService;
import kcc.let.uss.umt.service.MberManageConfigVO;
import kcc.let.uss.umt.service.MberManageVO;
import kcc.let.uss.umt.service.UserDefaultVO;
import kcc.let.utl.sim.service.EgovFileScrty;
import kcc.let.utl.sim.service.EgovNewPasswordUtil;
/**
* 일반회원관리에 관한비지니스클래스를 정의한다.
@ -55,7 +55,9 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement
String uniqId = idgenService.getNextStringId();
mberManageVO.setUniqId(uniqId);
//패스워드 암호화
String pass = EgovFileScrty.encryptPassword(mberManageVO.getPassword(), mberManageVO.getMberId());
//String pass = EgovFileScrty.encryptPassword(mberManageVO.getPassword(), mberManageVO.getMberId());
String pass = EgovNewPasswordUtil.hashPassword(mberManageVO.getPassword());
mberManageVO.setPassword(pass);
String result = mberManageDAO.insertMber(mberManageVO);
@ -93,7 +95,9 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement
@Override
public void updateMber(MberManageVO mberManageVO) throws Exception {
//패스워드 암호화
String pass = EgovFileScrty.encryptPassword(mberManageVO.getPassword(), mberManageVO.getMberId());
//String pass = EgovFileScrty.encryptPassword(mberManageVO.getPassword(), mberManageVO.getMberId());
String pass = EgovNewPasswordUtil.hashPassword(mberManageVO.getPassword());
mberManageVO.setPassword(pass);
mberManageDAO.updateMber(mberManageVO);
@ -151,7 +155,9 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement
String uniqId = idgenService.getNextStringId();
mberManageVO.setUniqId(uniqId);
//패스워드 암호화
String pass = EgovFileScrty.encryptPassword(mberManageVO.getPassword(), mberManageVO.getMberId());
//String pass = EgovFileScrty.encryptPassword(mberManageVO.getPassword(), mberManageVO.getMberId());
String pass = EgovNewPasswordUtil.hashPassword(mberManageVO.getPassword());
mberManageVO.setPassword(pass);
/*AuthorGroup authorGroup = new AuthorGroup();
authorGroup.setUniqId(uniqId);

View File

@ -42,6 +42,10 @@ public class LoginDAO extends EgovAbstractDAO {
return (LoginVO)select("loginDAO.actionLoginDev", vo);
}
public LoginVO actionLoginNew(LoginVO vo) throws Exception {
return (LoginVO)select("loginDAO.actionLoginNew", vo);
}
/**
* 등록된 SNS 수량을 조회한다.
* @param vo LoginVO

View File

@ -90,6 +90,8 @@ public interface EgovUserManageService {
*/
public void updatePassword(UserManageVO userManageVO) throws Exception;
public void updatePasswordR(UserManageVO userManageVO) throws Exception;
/**
* 사용자가 비밀번호를 기억하지 못할 비밀번호를 찾을 있도록
* @param passVO 업무사용자 암호 조회조건정보

View File

@ -17,7 +17,7 @@ import kcc.let.uat.uia.service.impl.MberManageDAO;
import kcc.let.uss.umt.service.EgovUserManageService;
import kcc.let.uss.umt.service.UserDefaultVO;
import kcc.let.uss.umt.service.UserManageVO;
import kcc.let.utl.sim.service.EgovFileScrty;
import kcc.let.utl.sim.service.EgovNewPasswordUtil;
/**
* 사용자관리에 관한 비지니스 클래스를 정의한다.
@ -127,7 +127,8 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
){
//관리자
//패스워드 암호화
pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
//pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
userManageVO.setPassword(pass);
}else {
//관리자 이외
@ -217,7 +218,8 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
@Override
public void updateUser(UserManageVO userManageVO) throws Exception {
//패스워드 암호화
String pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
//String pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
String pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
userManageVO.setPassword(pass);
userManageDAO.updateUser(userManageVO);
@ -244,6 +246,11 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
userManageDAO.updatePassword(userManageVO);
}
@Override
public void updatePasswordR(UserManageVO userManageVO) {
userManageDAO.updatePasswordR(userManageVO);
}
/**
* 사용자가 비밀번호를 기억하지 못할 비밀번호를 찾을 있도록
* @param passVO 업무사용자 암호 조회조건정보
@ -271,7 +278,8 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
@Override
public void updateUserPWAjax(UserManageVO userManageVO) throws Exception {
//패스워드 암호화
String pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
//String pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
String pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
userManageVO.setPassword(pass);
userManageDAO.updateUserPWAjax(userManageVO);
}
@ -348,7 +356,8 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
String pass = "1";
if("ROLE_ADMIN".equals(userManageVO.getAuthorCode()) || "ROLE_VISIT".equals(userManageVO.getAuthorCode())){
//패스워드 암호화
pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
//pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
userManageVO.setPassword(pass);
}else {
userManageVO.setPassword(pass);

View File

@ -108,6 +108,10 @@ public class UserManageDAO extends EgovAbstractDAO{
update("userManageDAO.updatePassword_S", passVO);
}
public void updatePasswordR(UserManageVO passVO) {
update("userManageDAO.updatePassword_R", passVO);
}
/**
* 업무사용자가 비밀번호를 기억하지 못할 비밀번호를 찾을 있도록
* @param userManageVO 업무 사용자암호 조회조건정보

View File

@ -74,7 +74,7 @@ import kcc.let.uss.umt.service.MberManageVO;
import kcc.let.uss.umt.service.UserDefaultVO;
import kcc.let.uss.umt.service.UserManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.sim.service.EgovFileScrty;
import kcc.let.utl.sim.service.EgovNewPasswordUtil;
/**
* 업무사용자관련 요청을 비지니스 클래스로 전달하고 처리된결과를 해당 화면으로 전달하는 Controller를 정의한다
@ -211,6 +211,17 @@ public class EgovUserManageController {
userSearchVO.setSearchSortOrd("desc");
}
List<?> resultList = userManageService.selectUserList(userSearchVO) ;
for (int i=0;i<resultList.size();i++) {
EgovMap userManageVO = (EgovMap) resultList.get(i);
egovCryptoUtil.decryptUserManageVO4EgovMap(userManageVO);
//decryptUserManageVO4EgovMap
//userManageVO.put("userNm", egovCryptoUtil.decrypt(userManageVO.get("userNm").toString()));
//userManageVO.put("emailAdres", egovCryptoUtil.decrypt(userManageVO.get("emailAdres").toString()));
//userManageVO.put("offmTelno", egovCryptoUtil.decrypt(userManageVO.get("offmTelno").toString()));
//resultList.get(i)
}
model.addAttribute("resultList", resultList);
//paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0);
//int i_resultList = resultList.size();
@ -543,6 +554,7 @@ public class EgovUserManageController {
}
*/
userManageVO = egovCryptoUtil.encryptUserManageVO(userManageVO);
userManageService.insertUser(userManageVO);
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
}catch(Exception e){
@ -608,6 +620,7 @@ public class EgovUserManageController {
UserManageVO userManageVO = new UserManageVO();
userManageVO = userManageService.selectUser(uniqId);
userManageVO = egovCryptoUtil.decryptUserManageVO(userManageVO);
model.addAttribute("userSearchVO", userSearchVO);
model.addAttribute("userManageVO", userManageVO);
@ -902,6 +915,8 @@ public class EgovUserManageController {
}
userManageService.insertUserHistory(userManageVO);
userManageVO = egovCryptoUtil.encryptUserManageVO(userManageVO);
userManageService.updateUser(userManageVO);
//권한업데이트
egovAuthorGroupService.updateAuthorGroup(authorGroup);
@ -1177,7 +1192,8 @@ public class EgovUserManageController {
}*/
if (isCorrectPassword) {
userManageVO.setPassword(EgovFileScrty.encryptPassword(newPassword, userManageVO.getEmplyrId()));
//userManageVO.setPassword(EgovFileScrty.encryptPassword(newPassword, userManageVO.getEmplyrId()));
userManageVO.setPassword(EgovNewPasswordUtil.hashPassword(newPassword)); //입력한 비밀번호 암호화
userManageService.updatePassword(userManageVO);
model.addAttribute("userManageVO", userManageVO);
resultMsg = "success.common.update";
@ -1917,7 +1933,9 @@ public class EgovUserManageController {
}else {
String returnPassword = returnUserManageVO.getPassword() ;
//패스워드 암호화
String encryptPass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
//String encryptPass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
String encryptPass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
if(returnPassword.equals(encryptPass)) {
modelAndView.addObject("usedCnt", 1);
//세션으로 인증넣어줌

View File

@ -7,10 +7,12 @@ import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import egovframework.rte.fdl.cryptography.EgovEnvCryptoService;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.service.CmmnDetailCode;
@ -19,6 +21,7 @@ import kcc.com.cmm.service.FileVO;
import kcc.kccadr.sch.service.SchduleManageVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.umt.service.UserManageVO;
import kcc.let.utl.sim.service.AES256Util;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduSatisfactionExcelVO;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO;
@ -66,6 +69,9 @@ public class EgovCryptoUtil {
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
@Autowired
private AES256Util aes256Util;
//////////////////////////////////////////////////
//
// VO /복호화
@ -81,6 +87,8 @@ public class EgovCryptoUtil {
if (!"".equals(p_vEEduAplctVO.getPhone())) p_vEEduAplctVO.setPhone(this.encrypt(p_vEEduAplctVO.getPhone()));
if (!"".equals(p_vEEduAplctVO.getEmail())) p_vEEduAplctVO.setEmail(this.encrypt(p_vEEduAplctVO.getEmail()));
if (!"".equals(p_vEEduAplctVO.getSearchKeyword()))p_vEEduAplctVO.setInstrNm(this.encrypt(p_vEEduAplctVO.getSearchKeyword()));
if (!"".equals(p_vEEduAplctVO.getdBirth())) p_vEEduAplctVO.setdBirth(this.encrypt(p_vEEduAplctVO.getdBirth()));
return p_vEEduAplctVO;
}
@ -91,9 +99,12 @@ public class EgovCryptoUtil {
if (!"".equals(p_vEEduAplctVO.getClphone())) p_vEEduAplctVO.setClphone(this.decrypt(p_vEEduAplctVO.getClphone()));
if (!"".equals(p_vEEduAplctVO.getPhone())) p_vEEduAplctVO.setPhone(this.decrypt(p_vEEduAplctVO.getPhone()));
if (!"".equals(p_vEEduAplctVO.getEmail())) p_vEEduAplctVO.setEmail(this.decrypt(p_vEEduAplctVO.getEmail()));
if (!"".equals(p_vEEduAplctVO.getInstrNm())) p_vEEduAplctVO.setInstrNm(this.decrypt(p_vEEduAplctVO.getInstrNm()));
if (!"".equals(p_vEEduAplctVO.getUserNm())) p_vEEduAplctVO.setUserNm(this.decrypt(p_vEEduAplctVO.getUserNm()));
if (!"".equals(p_vEEduAplctVO.getInstrPhone())) p_vEEduAplctVO.setInstrPhone(this.decrypt(p_vEEduAplctVO.getInstrPhone()));
if (!"".equals(p_vEEduAplctVO.getdBirth())) p_vEEduAplctVO.setdBirth(this.decrypt(p_vEEduAplctVO.getdBirth()));
return p_vEEduAplctVO;
}
@ -132,6 +143,7 @@ public class EgovCryptoUtil {
if (!"".equals(p_vEInstrDetailVO.getInstrNm())) p_vEInstrDetailVO.setInstrNm(this.encrypt(p_vEInstrDetailVO.getInstrNm()));
if (!"".equals(p_vEInstrDetailVO.getPhone())) p_vEInstrDetailVO.setPhone(this.encrypt(p_vEInstrDetailVO.getPhone()));
if (!"".equals(p_vEInstrDetailVO.getEmail())) p_vEInstrDetailVO.setEmail(this.encrypt(p_vEInstrDetailVO.getEmail()));
return p_vEInstrDetailVO;
}
@ -141,6 +153,7 @@ public class EgovCryptoUtil {
if (!"".equals(p_vEInstrDetailVO.getInstrNm())) p_vEInstrDetailVO.setInstrNm(this.decrypt(p_vEInstrDetailVO.getInstrNm()));
if (!"".equals(p_vEInstrDetailVO.getPhone())) p_vEInstrDetailVO.setPhone(this.decrypt(p_vEInstrDetailVO.getPhone()));
if (!"".equals(p_vEInstrDetailVO.getEmail())) p_vEInstrDetailVO.setEmail(this.decrypt(p_vEInstrDetailVO.getEmail()));
return p_vEInstrDetailVO;
@ -421,6 +434,9 @@ public class EgovCryptoUtil {
public UserManageVO encryptUserManageVO(UserManageVO p_userManageVO){
if (!"".equals(p_userManageVO.getEmplyrNm())) p_userManageVO.setEmplyrNm(this.encrypt(p_userManageVO.getEmplyrNm()));
//if (!"".equals(p_userManageVO.getUserNm())) p_userManageVO.setUserNm(this.encrypt(p_userManageVO.getUserNm()));
if (!"".equals(p_userManageVO.getOffmTelno())) p_userManageVO.setOffmTelno(this.encrypt(p_userManageVO.getOffmTelno()));
if (!"".equals(p_userManageVO.getEmailAdres())) p_userManageVO.setEmailAdres(this.encrypt(p_userManageVO.getEmailAdres()));
return p_userManageVO;
}
@ -429,6 +445,27 @@ public class EgovCryptoUtil {
public UserManageVO decryptUserManageVO(UserManageVO p_userManageVO){
if (!"".equals(p_userManageVO.getEmplyrNm())) p_userManageVO.setEmplyrNm(this.decrypt(p_userManageVO.getEmplyrNm()));
//if (!"".equals(p_userManageVO.getUserNm())) p_userManageVO.setUserNm(this.decrypt(p_userManageVO.getUserNm()));
if (!"".equals(p_userManageVO.getOffmTelno())) p_userManageVO.setOffmTelno(this.decrypt(p_userManageVO.getOffmTelno()));
if (!"".equals(p_userManageVO.getEmailAdres())) p_userManageVO.setEmailAdres(this.decrypt(p_userManageVO.getEmailAdres()));
return p_userManageVO;
}
//UserManageVO - 복호화 - egovmap으로 받은 경우 처리
public EgovMap decryptUserManageVO4EgovMap(EgovMap p_userManageVO){
//userManageVO.put("userNm", egovCryptoUtil.decrypt(userManageVO.get("userNm").toString()));
//userManageVO.put("emailAdres", egovCryptoUtil.decrypt(userManageVO.get("emailAdres").toString()));
//userManageVO.put("offmTelno", egovCryptoUtil.decrypt(userManageVO.get("offmTelno").toString()));
if (!"".equals(p_userManageVO.get("userNm").toString())) p_userManageVO.put("userNm", this.decrypt(p_userManageVO.get("userNm").toString()));
//if (!"".equals(p_userManageVO.getUserNm())) p_userManageVO.setUserNm(this.decrypt(p_userManageVO.getUserNm()));
if (!"".equals(p_userManageVO.get("offmTelno").toString())) p_userManageVO.put("offmTelno", this.decrypt(p_userManageVO.get("offmTelno").toString()));
if (!"".equals(p_userManageVO.get("emailAdres").toString())) p_userManageVO.put("emailAdres", this.decrypt(p_userManageVO.get("emailAdres").toString()));
return p_userManageVO;
@ -545,10 +582,14 @@ public class EgovCryptoUtil {
//CndtnTrgtMngVO - 암호화
// 240108 담당검사 이름 추가
public CndtnTrgtMngVO encryptCndtnTrgtMngVOInfo(CndtnTrgtMngVO p_cndtnTrgtInfoMngVO){
// if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm()) ) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getTrgtNm()) ) p_cndtnTrgtInfoMngVO.setTrgtNm(this.encrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.encrypt(p_cndtnTrgtInfoMngVO.getClphone().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getVntNmbr())) p_cndtnTrgtInfoMngVO.setVntNmbr(this.encrypt(p_cndtnTrgtInfoMngVO.getVntNmbr().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getdBirth())) p_cndtnTrgtInfoMngVO.setdBirth(this.encrypt(p_cndtnTrgtInfoMngVO.getdBirth().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddr())) p_cndtnTrgtInfoMngVO.setAddr(this.encrypt(p_cndtnTrgtInfoMngVO.getAddr().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddrDetail())) p_cndtnTrgtInfoMngVO.setAddrDetail(this.encrypt(p_cndtnTrgtInfoMngVO.getAddrDetail().trim()));
//if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.encrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm()));
return p_cndtnTrgtInfoMngVO;
@ -561,6 +602,11 @@ public class EgovCryptoUtil {
// if (!"".equals(p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getTrgtNm())) p_cndtnTrgtInfoMngVO.setTrgtNm(this.decrypt(p_cndtnTrgtInfoMngVO.getTrgtNm().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getClphone())) p_cndtnTrgtInfoMngVO.setClphone(this.decrypt(p_cndtnTrgtInfoMngVO.getClphone().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getVntNmbr())) p_cndtnTrgtInfoMngVO.setVntNmbr(this.decrypt(p_cndtnTrgtInfoMngVO.getVntNmbr().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getdBirth())) p_cndtnTrgtInfoMngVO.setdBirth(this.decrypt(p_cndtnTrgtInfoMngVO.getdBirth().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddr())) p_cndtnTrgtInfoMngVO.setAddr(this.decrypt(p_cndtnTrgtInfoMngVO.getAddr().trim()));
if (StringUtils.isNotEmpty( p_cndtnTrgtInfoMngVO.getAddrDetail())) p_cndtnTrgtInfoMngVO.setAddrDetail(this.decrypt(p_cndtnTrgtInfoMngVO.getAddrDetail().trim()));
//if (!"".equals(p_cndtnTrgtInfoMngVO.getPrsctrNm())) p_cndtnTrgtInfoMngVO.setPrsctrNm(this.decrypt(p_cndtnTrgtInfoMngVO.getPrsctrNm()));
return p_cndtnTrgtInfoMngVO;
@ -618,13 +664,9 @@ public class EgovCryptoUtil {
try {
LOGGER.debug("enc1-cryptoService.getCyptoAlgorithmKey()");
//LOGGER.debug(cryptoService.getCyptoAlgorithmKey());
//LOGGER.debug(cryptoService.getCyptoAlgorithmKey());
//System.out.println("enc1-cryptoService.getCyptoAlgorithmKey()");
//System.out.println(cryptoService.getCyptoAlgorithmKey());
//System.out.println(cryptoService.getCyptoAlgorithmKey());
//return cryptoService.encrypt(encrypt); // Handles URLEncoding.
return cryptoService.encryptNone(encrypt); // Does not handle URLEncoding.
//return cryptoService.encryptNone(encrypt); // Does not handle URLEncoding.
return aes256Util.encrypt(encrypt); // Does not handle URLEncoding.
} catch(IllegalArgumentException e) {
LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
} catch (Exception e) {
@ -648,9 +690,9 @@ public class EgovCryptoUtil {
//System.out.println("decry2-cryptoService.getCyptoAlgorithmKey()");
//System.out.println(cryptoService.getCyptoAlgorithmKey());
//return cryptoService.decrypt(decrypt); // Handles URLDecoding.
return cryptoService.decryptNone(decrypt); // Does not handle URLDecoding.
//return cryptoService.decryptNone(decrypt); // Does not handle URLDecoding.
return aes256Util.decrypt(decrypt); // Does not handle URLDecoding.
} catch(IllegalArgumentException e) {
LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
} catch (Exception e) {

View File

@ -0,0 +1,72 @@
package kcc.let.utl.sim.service;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
* Base64인코딩/디코딩 방식을 이용한 데이터를 암호화/복호화하는 Business Interface class
* @author 공통서비스개발팀 박지욱
* @since 2009.01.19
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.01.19 박지욱 최초 생성
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
public class AES256Util {
private static final String ALGORITHM = "AES/CBC/PKCS5Padding";
private static final String CHARSET = "UTF-8";
// 32바이트(256bit)
private final String secretKey;
// 16바이트 IV (고정하면 보안 취약하므로 운영환경에서는 랜덤으로 생성해서 함께 저장 권장)
private final String iv;
public AES256Util(String secretKey, String iv) {
if (secretKey.length() != 32 || iv.length() != 16) {
throw new IllegalArgumentException("Key must be 32 bytes and IV must be 16 bytes.");
}
System.out.println("secretKey--------------------------------------------------------------------------------");
System.out.println(secretKey);
System.out.println(iv);
this.secretKey = secretKey;
this.iv = iv;
}
// 암호화
public String encrypt(String plainText) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(CHARSET), "AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes(CHARSET));
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
byte[] encrypted = cipher.doFinal(plainText.getBytes(CHARSET));
return Base64.getEncoder().encodeToString(encrypted);
}
// 복호화
public String decrypt(String cipherText) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(CHARSET), "AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes(CHARSET));
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
byte[] decodedBytes = Base64.getDecoder().decode(cipherText);
byte[] decrypted = cipher.doFinal(decodedBytes);
return new String(decrypted, CHARSET);
}
}

View File

@ -0,0 +1,42 @@
package kcc.let.utl.sim.service;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
* Base64인코딩/디코딩 방식을 이용한 데이터를 암호화/복호화하는 Business Interface class
* @author 공통서비스개발팀 박지욱
* @since 2009.01.19
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.01.19 박지욱 최초 생성
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
public class EgovNewPasswordUtil {
//private static final Logger LOGGER = LoggerFactory.getLogger(EgovNewPasswordUtil.class);
// 파일구분자
//static final char FILE_SEPARATOR = File.separatorChar;
// 버퍼사이즈
//static final int BUFFER_SIZE = 1024;
private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
// 비밀번호 해시
public static String hashPassword(String rawPassword) {
return encoder.encode(rawPassword);
}
// 비밀번호 검증
public static boolean matches(String rawPassword, String encodedPassword) {
return encoder.matches(rawPassword, encodedPassword);
}
}

View File

@ -13,6 +13,9 @@
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType = WINDOWS

View File

@ -13,6 +13,9 @@
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType = WINDOWS

View File

@ -13,6 +13,9 @@
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType = WINDOWS

View File

@ -13,6 +13,9 @@
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType = WINDOWS

View File

@ -13,6 +13,9 @@
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
crypto.key=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
crypto.iv=1234567890ABCDEF
# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)
Globals.OsType = WINDOWS

View File

@ -20,13 +20,18 @@
cryptoPropertyLocation : 설정파일 암복호화 경로 (선택) 기본값은 'classpath:/egovframework/egovProps/globals.properties'
-->
<egov-crypto:config id="egovCryptoConfig"
initial="false"
crypto="false"
algorithm="SHA-256"
algorithmKey="egovframe"
algorithmKeyHash="gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ="
initial="true"
crypto="true"
algorithm="AES/CBC/PKCS5Padding"
algorithmKey="0123456789abcdef0123456789abcdef"
algorithmKeyHash=""
cryptoBlockSize="1024"
cryptoPropertyLocation="classpath:/egovframework/egovProps/globals.properties"
/>
<bean id="aes256Util" class="kcc.let.utl.sim.service.AES256Util">
<constructor-arg value="${crypto.key}" />
<constructor-arg value="${crypto.iv}" />
</bean>
</beans>

View File

@ -75,6 +75,49 @@
</isNotNull>
</select>
<!-- 비밀번호비교를 위한 데이터 가져오기 용 -->
<select id="loginDAO.actionLoginNew" resultMap="login">
/*loginDAO.actionLogin*/
<!-- 일반회원 -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
SELECT mber_id AS id
, mber_nm AS name
, password AS password
, ihidNum AS ihidNum
, mber_email_adres AS email
, 'GNR' AS userSe
, '-' AS orgnztId
, ESNTL_ID AS uniqId
, 0 AS passMiss
, mber_sttus AS emplyrSttusCode
, mbtlnum AS membCelnum
, birth_day AS membBirth
, '' AS userWork
FROM lettngnrlmber a
WHERE mber_id = #id#
</isEqual>
<!-- 업무사용자 -->
<isEqual property="userSe" compareValue="USR">
SELECT EMPLYR_ID AS id
, USER_NM AS name
, PASSWORD AS password
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
, ORGNZT_ID AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
, mbtlnum AS membCelnum
, '' AS membBirth
, user_work AS userWork
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
</isEqual>
</isNotNull>
</select>
<!-- 개발자 아이디 선택용 -->
<select id="loginDAO.actionLoginDev" resultMap="login">
/*loginDAO.actionLoginDev*/

View File

@ -568,6 +568,15 @@
]]>
</update>
<update id="userManageDAO.updatePassword_R">
<![CDATA[
UPDATE LETTNEMPLYRINFO
SET
PASSWORD = #password#
WHERE EMPLYR_ID = #uniqId#
]]>
</update>
<select id="userManageDAO.selectPassword_S" resultClass="userVO">
/* userManageDAO.selectPassword_S */
<![CDATA[

View File

@ -249,6 +249,7 @@ function userListExcelDownload(){
</td>
<td>
<c:out value="${result.fxNum}"/>
<c:out value="${result.emailAdres}"/>
</td>
<td>
<c:choose>

View File

@ -200,16 +200,16 @@
<div class="cont_wrap">
<!--tap 추가-->
<ul class="tab_wrap">
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'">과정신청기간관리목록</button></li>
<li class="tab active"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'">교육확정관리목록</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do" />'">과정관리목록</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'">과정신청기간관리</button></li>
<li class="tab active"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'">확정과정관리</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do" />'">과정관리</button></li>
</ul>
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육확정관리목록</h2>
<h2>확정과정관리</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>

View File

@ -212,22 +212,22 @@
<div class="cont_wrap">
<!--tap 추가-->
<ul class="tab_wrap">
<li class="tab active"><button type="button" >과정신청기간관리목록</button></li>
<li class="tab active"><button type="button" >과정신청기간관리</button></li>
<%-- <li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'">과정신청기간관리목록</button></li> --%>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'">교육확정관리목록</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do" />'">과정관리목록</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'">확정과정관리</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do" />'">과정관리</button></li>
</ul>
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>과정신청기간관리목록</h2>
<h2>과정신청기간관리</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">과정신청기간관리목록</span></li>
<li><span class="cur_nav">과정신청기간관리</span></li>
</ul>
</div>
<!-- //cont_tit -->

View File

@ -53,6 +53,7 @@
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do'/>";
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do'/>";
listForm.submit();
}
@ -176,22 +177,24 @@
<!--tap 추가-->
<ul class="tab_wrap">
<!-- <li class="tab active"><button type="button" >과정신청기간관리목록</button></li> -->
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'">과정신청기간관리목록</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'">교육확정관리목록</button></li>
<li class="tab active"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do" />'">과정관리목록</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'">과정신청기간관리</button></li>
<li class="tab"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'">확정과정관리</button></li>
<li class="tab active"><button type="button" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do" />'">과정관리</button></li>
</ul>
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>과정관리목록</h2>
<h2>과정관리</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">과정관리목록</span></li>
<li><span class="cur_nav">과정관리</span></li>
</ul>
</div>
<!-- //cont_tit -->