상세 컨텐츠

본문 제목

스프링 웹프로젝트 연습_8

JSP·자바·코틀린

by 김일국 2019. 10. 15. 21:15

본문

오늘은 스프링 시큐리티 기능중 암호화 기능(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 암호처리된 결과(아래)

지금까지 작업한 소스

20191015_backup.zip


Ps.

앞으로 할 작업

1. 에러상황 발생시 공통 예외처리 작업

2. 스프링 Ajax 방식 댓글 처리 작업

20191015_backup.zip
7.54MB

관련글 더보기

댓글 영역