🌿SPRING/🍀공부 [SPRING]

[SPRING]Spring Security - 패스워드 암호화

디카페인라떼 2022. 8. 23. 00:44

❗ 회원 등록 시 '비밀번호'는 사용자가 입력한 문자 그대로 DB 에 안 된다!!

'정보통신망법, 개인정보보호법' 에 의해 비밀번호는 암호화(Encryption)가 의무!!

 

  • 회원가입시 Password 입력 -> 비밀번호 (암호화 알고리즘)-> 암호화 => DB에 저장
    • 복호화가 불가능한 일반향 암호 알고리즘 사용  

그럼 사용자가 로그인할 때는 암호화된 패스워드를 기억해야 할까?

⇒ 아닙니다.

  • 사용자가 로그인을 위해 "아이디, 패스워드 (평문)" 입력 → 서버에 로그인 요청
    • 서버에서 패스워드 (평문) 을 암호화
      • 평문 → (암호화 알고리즘) → 암호문
  • DB 에 저장된 "아이디, 패스워드 (암호문)"과 일치 여부 확인

 


<패스워드 암호화 적용>

 

1. 암호화 알고리즘을 빈(Bean)으로 등록

security > WebSecurityConfig

@Bean
public BCryptPasswordEncoder encodePassword() {
    return new BCryptPasswordEncoder();
}

[암호화 알고리즘 사용용도]

(1) 회원 가입 시 패스워드를 암호화하여 저장

  • 직접 구현해 줘야 함

(2) 로그인 인증 시 사용

  • 스프링 시큐리티 자동으로 가져다 사용
  • 로그인 처리 시
    • 사용자가 입력한 패스워드 평문을 암호화
    • 암호화된 DB 의 패스워드와 비교

2. 회원 가입 시 패스워드 암호화 구현

service > UserService

    // 패스워드 암호화
        String password = passwordEncoder.encode(requestDto.getPassword());

3. 동작검증

  • 회원 가입 후 DB 에 패스워드가 암호화되어 저장되는지 확인