나아가는 길에 발자국을 찍어보자

[ Spring Security ] 비밀번호 암호화 PasswordEncoder 본문

Spring && Spring boot

[ Spring Security ] 비밀번호 암호화 PasswordEncoder

NAWIN 2020. 11. 18. 11:30
반응형

스프링 시큐리티에 관해서 정리를 한것같다고 생각했는데, 비밀번호 암호화 부분이 남아있었다.
이번에 개발하면서 사용한 부분과 내용을 정리해 보고자 한다.

 

 

1. Password Encoder

스프링 시큐리티(Spring Security)에서 제공하는 비밀번호 암호화 방법이다. 단방향 암호화로 진행이 되는데 인터페이스와 구현체를 제공한다.

  • 인터페이스 구성 요소

    public interface PasswordEncoder {
    
      // 비밀번호를 단방향 암호화
      String encode(CharSequence rawPassword);
    
      // 암호화되지 않은 비밀번호(raw-)와 암호화된 비밀번호(encoded-)가 일치하는지 비교
      boolean matches(CharSequence rawPassword, String encodedPassword);
    
      // 암호화된 비밀번호를 다시 암호화하고자 할 경우 true를 return하게 설정
      default boolean upgradeEncoding(String encodedPassword) { return false; };
    }
  • 사용 하기

    /* import 위치 */
    import org.springframework.security.crypto.password.PasswordEncoder;
    
    /* 인터 페이스 선언 */
    @NonNull
        private PasswordEncoder passwordEncoder;
    
    /*암호화 사용*/
    this.passwordEncoder.encode(user.getPassword()) 

암호화를 사용해서 저장하게되면 이렇게 암호화가 진행되어 DB에 저장된다.

암호화 되어 저장된 DB내부 모습

 

 

  • 암호화된 비밀번호 확인하기 => matches() 사용하기.

    public boolean confirmUser(String password, String dbPassword) {
            return passwordEncoder.matches(password, dbPassword);
    }

    이런 식으로 db에 저장된 암호화된 비밀번호와 사용자가 입력한 평문의 비밀번호를 비교하여 동일한지 확인 할 수있다.

반응형
Comments