public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
/* DB를 이용할 경우 이 부분을 DB에서 가져오는걸로 변경하면 된다. */
PreludebUser preludebUser = new PreludebUser();
try {
/* DB를 이용할 경우 이 부분을 DB에서 가져오는걸로 변경하면 된다. 이 값은 단순히 테스트하기위한 Mock value */
preludebUser.setUserName("test"); /* TODO test 아이디가 아니어도 비밀번호만 맞으면 통과됨. 심각한 오류. */
preludebUser.setSaltKey("1111"); /* saltKey 값은 DB에서 가지고 있어야 하며 DB Password 필드에는 암호화 + salt 가 적용된 비밀번호가 저장되어있어야 한다. */
preludebUser.setUserPassword(encoder.encodePassword("test1", saltSource.getSalt(preludebUser))); /* DB에 미리 암호화 + salt 방식이 적용되서 저장되어 있어야 한다. */
preludebUser.addAuthorities(setUserAuthGrade(9));
if ( (preludebUser.getUsername() == null) || (preludebUser.getUsername().equalsIgnoreCase("")) ) {
throw new CooiException(new UsernameNotFoundException(">>>> 유저 정보가 존재하지 않습니다."));
}
logger.info(">>>> preludebUser userName = " + preludebUser.getUsername());
logger.info(">>>> salt userPassword = " + encoder.encodePassword("test1", saltSource.getSalt(preludebUser)));
logger.info(">>>> userPassword = " + encoder.encodePassword("test1", null));
} catch ( CooiException e ) {
logger.error(e.getMessage(), e);
throw new CooiException(e.getMessage(), e);
} catch ( Exception e ) {
logger.error(">>>> 인증 하는 과정 중 오류가 발생하였습니다.", e);
throw new CooiException(">>>> " + e.getMessage(), e);
} finally {
}
return preludebUser;
}
이렇게 구현은 해놨습니다.
이렇게 셋팅하였습니다.
그리고 나서 클라이언트에서 j_username 에 test1111, j_password 에 test1 넣었습니다.
정상적이라면 아이디와 패스워드가 안맞아서 오류를 호출해야 정상인데 패스워드만 맞으면 정상 로그인으로 간주를 하네요..
어느부분이 잘못됐는지 궁금합니다.