티스토리 뷰

Spring

Spring Security - PasswordEncoder

엔꾸꾸 2019. 9. 8. 17:16

Spring Security - PasswordEncoder

  • Domain 로직의 {noop} + password 를 passwordEncoder에게 역할을 위임 하도록 한다.

PasswordEncoder 를 빈으로 등록하기

  • SpringSecurity 5 이전 버전에서 사용하던 NoOpPasswordEncoder 를 빈으로 등록한다.
  • Deprecated 되어 권장하지 않는 방법이다.

 

PasswordEncoder 적용하기

  • PasswordEncoder를 주입받아 Account 로 넘겨준뒤 인코딩 작업을 진행한다.

  • AccountService

 

  • 기존의 {noop} + passwordEncoder 로 인코딩 작업을 해주던 로직을 passwordEncoder를 사용하는 방식으로 변경한다.

  • Account

 

테스트

  • passwordEncoder를 사용하는 방식을 사용하면 어떤식으로 동작할지 한번 테스트 해보자.
  • 이전과 마찬가지로 http://localhost:8080/account/USER/user/1234 로 요청을 보내 유저를 생성해보자.
  • 다음과 같이 유저가 생성되고 응답이 오는것을 확인할 수 있다.
    • Security 5에서 사용하던 방식인 {noop} prefix 문자열이 사라진것이 확인된다.
  • 생성된 유저정보로 인증을 하면, /dashboard 도 접근이 가능하다.

 

PasswordFormat이 생긴 이유 ?

  • 이전에서는 noop passwordEncoder 였지만
  • 기본 전략이 {noop} 에서 bcrypt 방식으로 바뀌었다.
  • 이로서 문제가 발생하였음.
    • 이전의 버전을 사용하던 사람들은 평문으로 사용했을 수도 있다.
    • 다른 암호화 방식을 사용하고 싶은 사람도 있다.
  • 다양한 패스워드 방식을 제공하기위해 format이 변경되었다.

 

SpringSecurity 5.x 기본 PasswordEncoder

  • sha256, scrypt 등 id에 해당하는 알고리즘 명을 주고, 실제 패스워드 인코더 객체를 설정해주면, 알고리즘에 해당하는 패스워드 인코드를 사용한다.

  • SpringSecurity 5 에서 기본 패스워드 인코더로 사용하는 bcrypt 방식을 암호화를 사용하는 PasswordEncoder를 사용해보자

 

  • Bcrypt PasswordEncoder를 Bean으로 등록

 

'Spring' 카테고리의 다른 글

Spring Security - Security formLogin Test  (0) 2019.09.09
Spring Security - Security Test 1  (0) 2019.09.09
Spring Security - JPA 연동하기  (0) 2019.09.08
Spring Security - InMemoryUser  (3) 2019.09.08
Spring Security - Security Config  (0) 2019.09.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함