❗ 회원 등록 시 '비밀번호'는 사용자가 입력한 문자 그대로 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 에 패스워드가 암호화되어 저장되는지 확인
'🌿SPRING > 🍀공부 [SPRING]' 카테고리의 다른 글
[SPRING] Spring Security - OAuth2.0 (0) | 2022.08.23 |
---|---|
[SPRING] Spring Security - API 접근 권한 제어 (0) | 2022.08.23 |
[SPRING] Spring Security framework (0) | 2022.08.23 |
[SPRING] Spring Security - 쿠키 vs 세션 vs JWT + Token (0) | 2022.08.23 |
[SPRING] spring framwork의 이해 (0) | 2022.08.22 |