오늘은 스프링 시큐리티 기능중 암호화 기능(BCryptPasswordEncoder - SHA512방식보다 스프링에 최적화됨)을 회원 암호에 적용해 봅니다.
기술참조: https://jhlblue.tistory.com/19 (전자정부 프레임웍에 사용된 스프링 시큐리티), https://syaku.tistory.com/310
#작업내용
1. Junit으로 시프링 시큐리티 테스트 코드 실행
}
public void testInsertMember()throws Exception{
MemberVO vo = new MemberVO();
//학생 실습용 vo, if문과 else추가
logger.info("vo in selectMember = " + dao.selectMember("user02"));
if(dao.selectMember("user02") == null) {
//스프링 시큐리티 4.x BCryptPasswordEncoder 암호 사용
BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder(10);
String bcryptPassword = bcryptPasswordEncoder.encode("user02");
vo.setUser_id("user02");
vo.setUser_pw(bcryptPassword);
vo.setPoint(0);
vo.setEnabled(true);
vo.setLevel("ROLE_ADMIN");
vo.setUser_name("user02");
vo.setEmail("user02@edu.com");
dao.insertMember(vo);
}else {
logger.info("testInsertMember in selectMember = " + vo.toString());
logger.info("vo.user_id = " + vo.getUser_id());
dao.delete("user02");
}
}
==============================================================================
2. 실제 서비스 적용은 스프링 설정파일 security-context.xml 만 설정하면 로그인 체크시 암호화 적용 됩니다.(아래)
.... <security:csrf disabled="true" />
<!-- 위 1줄 추가. 이 항목은 게시판 입력시 csrf 보안체크 여부를 결정 합니다. 기본값 false 시
폼 전송태그에는 항상 <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"> 추가해야 합니다.
그래서 위 true값을 사용 합니다.
-->
....기존 내용...
<security:password-encoder ref="passwordEncoder"/>
</security:authentication-provider>
</security:authentication-manager>
<!-- 스프링 내장 BCryptPasswordEncoder 암호화 이용-->
<bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
</beans>
Db 회원테이블에 user_pw 암호처리된 결과(아래)
지금까지 작업한 소스
Ps.
앞으로 할 작업
1. 에러상황 발생시 공통 예외처리 작업
2. 스프링 Ajax 방식 댓글 처리 작업
스프링 웹프로젝트 연습_10 (0) | 2019.10.18 |
---|---|
스프링 웹프로젝트 연습_9 (0) | 2019.10.17 |
스프링 웹프로젝트 연습_7 (0) | 2019.10.15 |
스프링 웹프로젝트 연습_6 (0) | 2019.10.13 |
스프링 웹프로젝트 연습_5 (0) | 2019.10.12 |
댓글 영역