신규 블로그를 만들었습니다!
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>
로그인을 해보고 정상적으로 로그인이 되는지 확인한다.
'WEB > SpringMVC' 카테고리의 다른 글
SpringMVC :: 시큐리티(Security) 5 버전 , 403 에러와 500 에러(Internal server error) (4) | 2018.05.08 |
---|---|
SpringMVC :: 리다이렉트(redirect) 사용하기 (6) | 2018.03.21 |
SpringMVC :: @ModelAttribute 사용법, 커맨드 객체 이름 바꾸기 (3) | 2018.03.20 |
SpringMVC :: @RequestMapping의 GET방식과 POST방식, GET 과 POST 차이 (10) | 2018.03.20 |
SpringMVC :: @PathVariable 사용하기 (6) | 2018.03.20 |
최근댓글