비밀번호 만료기간 관리

개요

아이디 생성후 또는 비밀번호를 변경후 정해진 기간이 경과하면 비밀번호 변경을 요청한다.

설명

계정별 비밀번호 생성 또는 변경일시는 DB테이블의 컬럼에 저장되며 지정된 기간이 경과하면 로그인시 체크하여 변경을 요청한다.

관련소스

유형대상소스설명비고
Controller egovframework.com.cmm.web.EgovComIndexController.java 초기 컨텐츠표시 Controller 시간관리 표시
Service egovframework.com.uat.uia.service.EgovLoginService 비밀번호 만료 및 로그인 관련 서비스 인터페이스
ServiceImpl egovframework.com.uat.uia.service.impl.EgovLoginServiceImpl 비밀번호 만료 및 로그인 관련 서비스 구현 클래스
DAO egovframework.com.uat.uia.service.impl.EgovLoginServiceImpl 비밀번호 만료 및 로그인위한 데이터처리 클래스
JSP /WEB-INF/jsp/egovframework/com/cmm/EgovUnitContent.jsp 초기 컨텐츠표시 페이지 시간관리 표시 팝업호출
JSP /WEB-INF/jsp/egovframework/com/uat/uia/EgovExpirePwd.jsp 비밀번호 만료 안내 페이지 시간관리 표시 팝업
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_mysql.xml비밀번호 만료 및 로그인을위한 MySQL용 Query XML
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_oracle.xml비밀번호 만료 및 로그인을 위한 Oracle용 Query XML
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_tibero.xml비밀번호 만료 및 로그인을 위한 Tibero용 Query XML
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_altibase.xml비밀번호 만료 및 로그인을 위한 Altibase용 Query XML
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_cubrid.xml비밀번호 만료 및 로그인을 위한 Cubrid용 Query XML
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_maria.xml비밀번호 만료 및 로그인을 위한 Maria용 Query XML
Query XMLresources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_postgres.xml비밀번호 만료 및 로그인을 위한 Postgres용 Query XML

관련테이블

테이블명테이블명(영문)비고
일반회원COMTNGNRLMBER일반회원 정보를 관리한다.
주민등록번호(IHIDNUM) 컬럼이 존재하나 데이터 저장 및 조회 로직에서는 제외되어 있으므로
필요시 암호화하여 구현해야 함
CHG_PWD_LAST_PNTTM 컴럼 사용(비밀번호 최초등록 또는 수정 일시 기록)
기업회원COMTNENTRPRSMBER기업회원 정보를 관리한다.
신청인주민등록번호(APPLCNT_IHIDNUM) 컬럼이 존재하나 데이터 저장 및 조회 로직에서는 제외되어 있으므로,
필요시 암호화하여 구현해야 함
CHG_PWD_LAST_PNTTM 컴럼 사용(비밀번호 최초등록 또는 수정 일시 기록)
업무사용자COMTNEMPLYRINFO업무사용자 정보를 관리한다.
CHG_PWD_LAST_PNTTM 컴럼 사용(비밀번호 최초등록 또는 수정 일시 기록)

환경설정

비밀번호 등록 또는 수정후 만료 기간을 설정할수 있다.

globals.properties 설정

설정파일에 Globals.ExpirePwdDay를 설정한다. 일 단위로 기재한다. ex) 180 = 180일
비밀번호 등록 또는 수정일로부터 지정된 일수 까지는 유효하고 해당 기간이 지나면 안내 팝업이 출력된다.

    # 비밀번호 유효기간 설정
    Globals.ExpirePwdDay = 180

사용방법

비밀번호 만료기간 체크

비즈니스 규칙

비밀번호 등록 또는 수정날짜에서 특정한 시일이 경과하였는지 확인한다.

관련코드

 
@RequestMapping("/EgovContent.do")
public String setContent(ModelMap model) throws Exception {
 
	// 설정된 비밀번호 유효기간을 가져온다. ex) 180이면 비밀번호 변경후 만료일이 앞으로 180일 
	String propertyExpirePwdDay = EgovProperties.getProperty("Globals.ExpirePwdDay");
	int expirePwdDay = 0 ;
	try {
		expirePwdDay =  Integer.parseInt(propertyExpirePwdDay);
	} catch (Exception e) {
		LOGGER.debug("convert expirePwdDay Err : "+e.getMessage());
	}
 
	model.addAttribute("expirePwdDay", expirePwdDay);
 
	// 비밀번호 설정일로부터 몇일이 지났는지 확인한다. ex) 3이면 비빌번호 설정후 3일 경과
	LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
	model.addAttribute("loginVO", loginVO);
	int passedDayChangePWD = 0;
	if ( loginVO != null ) {
		LOGGER.debug("===>>> loginVO.getId() = "+loginVO.getId());
		LOGGER.debug("===>>> loginVO.getUniqId() = "+loginVO.getUniqId());
		LOGGER.debug("===>>> loginVO.getUserSe() = "+loginVO.getUserSe());
		// 비밀번호 변경후 경과한 일수
		passedDayChangePWD = loginService.selectPassedDayChangePWD(loginVO);
		LOGGER.debug("===>>> passedDayChangePWD = "+passedDayChangePWD);
		model.addAttribute("passedDay", passedDayChangePWD);
	}
 
	// 만료일자로부터 경과한 일수 => ex)1이면 만료일에서 1일 경과
	model.addAttribute("elapsedTimeExpiration", passedDayChangePWD - expirePwdDay);
 
	return "egovframework/com/cmm/EgovUnitContent";
}

관련화면 및 수행매뉴얼

ActionURLController methodSQL NamespaceSQL QueryID
초기 컨텐츠 화면 /EgovContent.do setContent “LoginUsr” “selectPassedDayChangePWD”

관련화면

비밀번호 만료기간 표시

비즈니스 규칙

회원가입시 또는 비밀번호 변경시 비밀번호 수정날짜가 관리된다.
비밀번호 수정날짜에서 특정한 시일이 경과하면 비밀번호 만료에 대한 안내 팝업을 출력하여 비밀번호 변경을 유도한다.

관련코드

 
@RequestMapping(value="/uat/uia/noticeExpirePwd.do")
public String noticeExpirePwd(@RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
 
	// 설정된 비밀번호 유효기간을 가져온다. ex) 180이면 비밀번호 변경후 만료일이 앞으로 180일 
	String propertyExpirePwdDay = EgovProperties.getProperty("Globals.ExpirePwdDay");
	int expirePwdDay = 0 ;
	try {
		expirePwdDay =  Integer.parseInt(propertyExpirePwdDay);
	} catch (NumberFormatException e) {
		LOGGER.debug("convert expirePwdDay Err : "+e.getMessage());
	} catch (Exception e) {
		LOGGER.debug("convert expirePwdDay Err : "+e.getMessage());
	}
 
	model.addAttribute("expirePwdDay", expirePwdDay);
 
	// 비밀번호 설정일로부터 몇일이 지났는지 확인한다. ex) 3이면 비빌번호 설정후 3일 경과
	LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
	model.addAttribute("loginVO", loginVO);
	int passedDayChangePWD = 0;
	if ( loginVO != null ) {
		LOGGER.debug("===>>> loginVO.getId() = "+loginVO.getId());
		LOGGER.debug("===>>> loginVO.getUniqId() = "+loginVO.getUniqId());
		LOGGER.debug("===>>> loginVO.getUserSe() = "+loginVO.getUserSe());
		// 비밀번호 변경후 경과한 일수
		passedDayChangePWD = loginService.selectPassedDayChangePWD(loginVO);
		LOGGER.debug("===>>> passedDayChangePWD = "+passedDayChangePWD);
		model.addAttribute("passedDay", passedDayChangePWD);
	}
 
	// 만료일자로부터 경과한 일수 => ex)1이면 만료일에서 1일 경과
	model.addAttribute("elapsedTimeExpiration", passedDayChangePWD - expirePwdDay);
 
	return "egovframework/com/uat/uia/EgovExpirePwd";

관련화면 및 수행매뉴얼

ActionURLController methodSQL NamespaceSQL QueryID
비밀번호 만료 팝업 /uat/uia/noticeExpirePwd.do noticeExpirePwd “LoginUsr”“selectPassedDayChangePWD”

  • 지금 즉시 변경하기 : 비밀번호 변경화면으로 이동한다.
  • 다음에 변경하기 : 비밀번호 팝업창을 닫는다. 창을 닫아도 화면 새로고침시 다시 팝업이 출력된다.

참고자료

 
egovframework/com/v4.0/sec/pw_expiration_management.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki