신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

 

Bcrypt 인코딩

  • Step1. 빈객체 생성

Bcrypt 암호화를 위해서 context.xml 파일에 BcryptPasswordEncoder 빈 객체를 생성해줘야 한다. 

<!-- Security -->
<bean id="bcryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />​

 

  • Step2. 서비스단에서 암호화

빈 생성 후 로그인 서비스 파일에 IOC에서 BcryptPasswordEncoder빈을 불러와 암호화를 한다.

@Autowired
private BCryptPasswordEncoder bcryptPasswordEncoder;​

 

public int signUp(UserInfoDto userInfoDto) {
    // .. 생략 ..

    System.out.println("암호화 되기 전 : " + userInfoDto.getUserPwd());
    userInfoDto.setUserPwd(bcryptPasswordEncoder.encode(userInfoDto.getUserPwd())); // bcrypt 암호화
    System.out.println("암호화 된 후 : " + userInfoDto.getUserPwd());

    // .. 생략 ..
}​

.encode 메소드를 이용해서 암호화를 해준다. 암호화를 한 패스워드를 다시 user DTO 객체에 갱신(UPDATE)해준다. 

 

  • Step3. 암호화가 정상적으로 됐는지 확인

회원가입을 하고 비밀번호가 정상적으로 암호화 되는지 확인을 해본다.

 

암호화가 된것을 확인 후 데이터베이스(MySQL)에 제대로 저장이 됐는지 확인한다.

 

  • Step4. 로그인을 위한 설정 

시큐리티 컨텍스트 파일에서는 <security:password-encoder hash="bcrypt"/>를 적용시켜준다. (추후에 로그인을 하기 위해서 어떤 방법으로 암호화를 하는지 정의 해줌. 본 글에서는 bcrypt 암호화)

<security:authentication-manager>
    <security:authentication-provider>
        <security:password-encoder hash="bcrypt" />    
        <security:jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="SELECT userEmail, userPwd, enabled
                                    FROM userInfo
                                    WHERE userEmail = ?"
                                    
            authorities-by-username-query="SELECT userEmail, userRole
                                            FROM user_role
                                            WHERE userEmail = ?"
        />
    </security:authentication-provider>
</security:authentication-manager>​

 

로그인을 해보고 정상적으로 로그인이 되는지 확인한다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기