From ae0d89d8707e92ff19eda94135df144219087227 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Sat, 29 Oct 2022 11:59:25 +0900 Subject: [PATCH] =?UTF-8?q?[#17]=20feat:=20provider=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Custom AuthenticationProvider 구현체 적용(비밀번호 인증 과정) - 불필요한 클래스 제거(SecurityUser) --- .../dongnecafe/common/entity/SecurityUser.kt | 5 ----- .../common/security/ApiAuthenticationProvider.kt | 12 +++++++++++- 2 files changed, 11 insertions(+), 6 deletions(-) delete mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt deleted file mode 100644 index 459f0cd..0000000 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.beaniejoy.dongnecafe.common.entity - -class SecurityUser( - -) \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt index cbef10c..1deda11 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt @@ -2,12 +2,17 @@ package io.beaniejoy.dongnecafe.common.security import mu.KLogging import org.springframework.security.authentication.AuthenticationProvider +import org.springframework.security.authentication.BadCredentialsException import org.springframework.security.authentication.UsernamePasswordAuthenticationToken import org.springframework.security.core.Authentication import org.springframework.security.core.userdetails.UserDetailsService import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.stereotype.Component +/** + * 실제 인증 절차 수행 + * @property userDetailsService email로 계정 찾기 + */ @Component class ApiAuthenticationProvider( private val userDetailsService: UserDetailsService, @@ -22,7 +27,12 @@ class ApiAuthenticationProvider( val password = authentication.credentials as String? val user = userDetailsService.loadUserByUsername(email) - TODO("Not yet implemented") + if (!passwordEncoder.matches(password, user.password)) { + throw BadCredentialsException("Input password does not match stored password") + } + + // password null로 반환 + return UsernamePasswordAuthenticationToken(email, null, user.authorities) } override fun supports(authentication: Class<*>): Boolean {