티스토리 뷰
Spring Security (5) : 비밀번호 암호화 저장
기존 코드는 회원가입을 진행할 때 따로 비밀번호 암호화를 진행하지않았다.혹시 데이터가 유출이 된다 하더라고 데이터의 정확한 정보를 넘기지 않기위해 비밀번호 암호화는 필수적이다.따라
ekeprl.tistory.com
비밀번호를 암호화하여 저장을 완료했고,
이번 포스팅은 로그인시 입력한 비밀번호와 비교하여 로그인하는 과정을 작성하겠다.
AuthenticationProvider 작성 : https://ekeprl.tistory.com/31
Spring Security (2)
(1)편에 이어서 2편을 작성하려한다.2편은 AuthenticationProvider / Success,Failuer Handler를 다뤄보겠다. AuthenticationProvider : 실제 인증 처리 @Componentclass CustomAuthenticationProvider : AuthenticationProvider{ @Autowired
ekeprl.tistory.com
이번 포스팅을 보기전에 위 포스팅을 보고오면 어떤 부분을 수정했는지 확인할 수 있다.
1.CustomAuthenticationProvider
@Component
class CustomAuthenticationProvider(private val mapper : CommonMapper) : AuthenticationProvider{
val logger = LoggerFactory.getLogger(this::class.java)
private val passwordEncoder = BCryptPasswordEncoder()
override fun authenticate(authentication: Authentication): Authentication
{
val userid = authentication.principal.toString()
val userpw = authentication.credentials.toString()
logger.info("Authentication User PW: $userpw")
val user = mapper.getuserinfo(userid)
?: throw BadCredentialsException("사용자 정보 없음")
logger.info("Authentication User encoding PW: " + user.mempw)
mapper.getuserinfo(userid).also {user ->
if(passwordEncoder.matches(userpw, user?.mempw)) {
val authorities = listOf(SimpleGrantedAuthority("ROLE_USER"))
return UsernamePasswordAuthenticationToken(userid,userpw,authorities)
}else {
throw BadCredentialsException("비밀번호 오류 : BadCredentialsException")
}
}
}
override fun supports(authentication: Class<*>): Boolean {
return UsernamePasswordAuthenticationToken::class.java.isAssignableFrom(authentication)
}
}
기존 작성한 코드는 로그인창에 작성한 비밀번호와 회원테이블의 pw에 있는값을 비교하는 방식이였지만,

회원가입시 암호화된 비밀번호와 비교할 수 있도록
passwordEncoder.matches(userpw, user?.mempw)를 추가했다.
logger.info는 값을 잘 비교하는지 확인하기위해 작성했다.

로그를 살펴보니
(1) 로그인창에 입력한 비밀번호 : logger.info("Authentication User PW: $userpw") = 123
(2) DB에 작성한 암호화된 비밀번호 : logger.info("Authentication User encoding PW: " + user.mempw)
= $2a$10$GkSBxc/7hYXvev.kRNwPSucvkbdSogPIqdcekhJsWTiZXw6HfY36y

암호화된 비밀번호와 입력한 비밀번호를 비교해서 로그인에 성공했다.
DB에 암호화된 비밀번호가 없는 아이디(ekeprl)로 로그인을 시도해보면

로그인에 실패한다.
이상으로 포스팅을 마치겠다.
'Spring > Security' 카테고리의 다른 글
| Spring Security (7) : Spring Security 권한 지정하기 ROLE_ (0) | 2025.05.12 |
|---|---|
| Spring Security (5) : 비밀번호 암호화 저장 (0) | 2025.03.05 |
| Spring Security (4) : session 값 저장 (0) | 2025.01.16 |
| Spring Security (3) (0) | 2024.10.14 |
| Spring Security (1) (5) | 2024.10.14 |
