Info
- spring-security ์ฌ์ฉ.
- JWT ์ฌ์ฉ.
- Authorization: Bearer ~
- ๋น๋ฐ๋ฒํธ ์ํธํ๋ BCryptPasswordEncoder ์ฌ์ฉ.
- formLogin disable.
- security logout disable.
JWT Provider
Token ์ ๋ณด๋ user์ SEQ ๊ฐ์ ๋ด๊ณ ์์.
AccessToken
- ๋ง๋ฃ ์๊ฐ: 15์ผ (ํ ์คํธ๋ฅผ ์ํด ์์ ์ธํ )
- AccessToken์ ๋ง๋ฃ๋์ง ์๋ ํ BE์์ ๋ฐ๋ก ํด๋ ํ์ฌ ์ฌ์ฉ.
- responseHeader์ token_status์ ๋ฐ๋ผ ํ์ฌ AccessToken์ ์ํ ํ์ธ ๊ฐ๋ฅ.
| status | description |
|---|---|
| ALLOW | ํ์ฉ |
| NOT_ALLOW | ๋นํ์ฉ |
| EXPIRED | ๋ง๋ฃ(ํ์ฉ ๊ฐ๋ฅํ token์ด์ง๋ง ์ ํจ ์๊ฐ์ด ์ง๋, ์ฌ๋ฐ๊ธ ํ์) |
RefreshToken
- ๋ง๋ฃ ์๊ฐ: 30์ผ
- RefreshToken์ Redis์ ์ ์ฅ/์ญ์ ๊ด๋ฆฌ๋ฅผ ํ๋ฉฐ, ์ ํจ ์๊ฐ๋ Redis ์ ์ฑ ์ ๋ฐ๋ฆ (life cycle์ BE์์ ์จ์ ํ ๊ด๋ฆฌํ๊ธฐ ์ํจ.)
Process
- AccessToken โ SEQ ํด๋ .
- ๋ก๊น ์ถ์ ์ ์ํด SEQ๋ฅผ MDC์ ์ ์ฅ.
- SEQ๋ก ์ ์ ์ ๋ณด ์กฐํ. (redis or DB)
SecurityContextHolder.Context.authentication.details์ user ์ ๋ณด ์ ์ฅ.
Code
private fun allow(accessToken: String) {
val id = jwtTokenProvider.parseIdFromJWT(accessToken)
MDC.put("userId", id.toString())
setUser(id)
}Authorization Usage
-
์ธ์ฆ๋ user ์ ๋ณด๋ฅผ ๊บผ๋ด๋ ค๋ฉด,
SecurityContextHolder.getContext().authentication.details as User์ ์ฌ์ฉ. -
Service Layer์์ ํ์ ์,
TopLevelFunction.kt์ ๋ฑ๋ก๋fun user() = userMapper.toMember(SecurityContextHolder.getContext().authentication.details as User)function์ ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์.