generated from pricelees/issue-pr-template
feat: Base64 형식의 시크릿키를 검증하는 인터셉터 추가
This commit is contained in:
parent
6974418cef
commit
dc17316856
@ -0,0 +1,39 @@
|
|||||||
|
package com.sangdol.tosspaymock.web.supports
|
||||||
|
|
||||||
|
import com.sangdol.tosspaymock.exception.TosspayException
|
||||||
|
import com.sangdol.tosspaymock.exception.code.TosspayConfirmErrorCode
|
||||||
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
|
import org.springframework.http.HttpHeaders
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
import org.springframework.web.method.HandlerMethod
|
||||||
|
import org.springframework.web.servlet.HandlerInterceptor
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class SecretKeyInterceptor : HandlerInterceptor {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val basicAuthRegex = Regex("Basic (.*)")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun preHandle(
|
||||||
|
request: HttpServletRequest,
|
||||||
|
response: HttpServletResponse,
|
||||||
|
handler: Any
|
||||||
|
): Boolean {
|
||||||
|
if (handler !is HandlerMethod) return true
|
||||||
|
|
||||||
|
val basicAuthSecretKey: String = request.getHeader(HttpHeaders.AUTHORIZATION)
|
||||||
|
?: throw TosspayException(TosspayConfirmErrorCode.INVALID_API_KEY)
|
||||||
|
|
||||||
|
return try {
|
||||||
|
val secretKey = basicAuthRegex.find(basicAuthSecretKey)!!.groupValues[1]
|
||||||
|
Base64.getDecoder().decode(secretKey)
|
||||||
|
|
||||||
|
true
|
||||||
|
} catch (_: Exception) {
|
||||||
|
throw TosspayException(TosspayConfirmErrorCode.UNAUTHORIZED_KEY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.sangdol.tosspaymock.web.supports
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
class TosspayMvcConfig(
|
||||||
|
private val secretKeyInterceptor: SecretKeyInterceptor
|
||||||
|
) : WebMvcConfigurer {
|
||||||
|
|
||||||
|
override fun addInterceptors(registry: InterceptorRegistry) {
|
||||||
|
registry.addInterceptor(secretKeyInterceptor)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user