package nlib.cmm.crypto; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cryptography.EgovPasswordEncoder; /** *
* @Class Name : NlibPasswordEncoder.java * * @Description : 스프링 시큐리티 비밀번호 암호화 처리를 위하여 전자정부 프레임워크의 SHA256 알고리즘 구현체를 사용한 비밀번호 인코더 클래스 * * * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021) * ** * @ ------------ -------- --------------------------- * @ 수정일 수정자 수정내용 * @ ------------ -------- --------------------------- * @ 2021. 7. 9. KNKIM 최초 생성 * * * @author 이씨플라자 * DIGITALSHIP KNKIM * @since 2021. 7. 9. * @version 1.0 * */ @Component("nlibPasswordEncoder") public class NlibPasswordEncoder implements PasswordEncoder { /* extends EgovPasswordEncoder */ private static final Logger log = LoggerFactory.getLogger(NlibPasswordEncoder.class); @Resource(name = "egovEnvPasswordEncoderService") EgovPasswordEncoder egovPasswordEncoder; /* 비밀번호를 SHA-256 알고리즘을 사용하여 암호화한다. * * (non-Javadoc) * @see org.springframework.security.crypto.password.PasswordEncoder#encode(java.lang.CharSequence) */ @Override public String encode(CharSequence rawPassword) { log.debug("encode > rawPassword = " + rawPassword); return egovPasswordEncoder.encryptPassword(rawPassword.toString()); } /* 두 입력된 비밀번호가 일치하는 지 확인한다. * - rawPassword : 입력된 비밀번호로 암호화되지 않은 비밀번호 * - encodedPassword : 암호화된 비밀번호 (사용자DB에서 읽어온 값) * * (non-Javadoc) * @see org.springframework.security.crypto.password.PasswordEncoder#matches(java.lang.CharSequence, java.lang.String) */ @Override public boolean matches(CharSequence rawPassword, String encodedPassword) { log.debug("matches > rawPassword = " + rawPassword); log.debug("matches > encodedPassword = " + encodedPassword); return egovPasswordEncoder.checkPassword(rawPassword.toString(), encodedPassword); } }