Bibi's DevLog ๐ค๐
[JWT ๊ธฐ์ด] JWT, TOKEN ํ ํฐ ๋ฒ ์ด์ค ๋ก๊ทธ์ธ ๋ณธ๋ฌธ
JWT, TOKEN ํ ํฐ ๋ฒ ์ด์ค ๋ก๊ทธ์ธ
์ถ์ฒ ๐โโ๏ธ
Token Based Auth (JWT)์ ๋ํ ๋ด์ฉ์ด๋ค.
Session Based Auth
๋ก๊ทธ์ธ
- ํด๋ผ์ด์ธํธ : ID, PW์ ํจ๊ป request
- ์๋ฒ : ID,PW ํ์ธ ํ ๋ง๋ค๋ฉด sessionID๋ฅผ ์ฟ ํค์ ๋ฃ์ด response
- ์๋ฒ ๋ด๋ถ์์ sessionId๋ฅผ ๊ด๋ฆฌ
๋ก๊ทธ์ธ ์ดํ
- ํด๋ผ์ด์ธํธ : ์์ฒญ์ ํ ๋ sessionID๋ฅผ ํจ๊ป ๋ณด๋
- ์๋ฒ : sessionID๊ฐ ์กด์ฌํ๋ค๋ฉด/๋ง๋ค๋ฉด ๋ก๊ทธ์ธ ์์๋ง ๋ณผ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์๋ต
Token Based Auth
์ ๋ฑ์ฅํ๋๊ฐ?
- ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ผ๋ก๋ ์ฌ๋ฌ ์๋น์ค, ์ฌ๋ฌ ์๋ฒ์ ์ธ์ฆ์ ์ฒ๋ฆฌํ๊ธฐ๊ฐ ๋๋ฌด ๋ณต์กํ๊ธฐ ๋๋ฌธ
๋ก๊ทธ์ธ
- ํด๋ผ์ด์ธํธ : ID, PW์ ํจ๊ป request
- ์๋ฒ : ID, PW ํ์ธ ํ ๋ง๋ค๋ฉด ํ ํฐ์ response
- ์๋ฒ๊ฐ sessionID๋ฅผ ๊ด๋ฆฌํ์ง ์์
๋ก๊ทธ์ธ ์ดํ
- ํด๋ผ์ด์ธํธ : ์์ฒญ ์ ํ ํฐ์ ํจ๊ป ๋ณด๋
- ์๋ฒ : ํ ํฐ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธ ํ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ ํ ๊ถํ์ ๋ถ์ฌ
์ฅ์
- ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ๋ค๋ฅธ ์๋ฒ์ ์์ฒญํ ๋์๋ ๊ฐ์ ํ ํฐ๊ณผ ํจ๊ป ์์ฒญํ๋ค
- ์๋ฒ๋ ํ ํฐ์ด ์ฌ๋ฐ๋ฅธ์ง ์๋์ง๋ง ํ์ธํ๊ณ , ์ฌ๋ฐ๋ฅด๋ค๋ฉด ๊ถํ ๋ถ์ฌ
- -> ์ธ์ ์ํ session state๋ฅผ ๋งค๋ฒ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค. ํ ํฐ๋ง ๋ณด๊ณ ๊ถํ์ ๋ถ์ฌํ๋ค
JWT - Json Web Token
- JWT๋ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ์์ด๋ค.
- jwt ๊ณต์ ํ์ด์ง์์ ์ด๋ป๊ฒ ์ธ์ฝ๋ฉ,๋์ฝ๋ฉ๋๋์ง ํ์ธ ๊ฐ๋ฅ
์ธ์ฝ๋ฉ
- ํด๋ผ์ด์ธํธ๊ฐ (์๋ฒ๋ก๋ถํฐ ๋ฐ์)ํ ํฐ์ ์๋ฒ์๊ฒ ๋ณด๋ผ ๋์ ์ํ. ์ํธํ๋์ด ์๋ค
- 3๋จ๊ณ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค - ํค๋ header, ํ์ด๋ก๋ payload, ์๊ทธ๋์ฒ verify signature
ํค๋ header
- ์ธ์ฝ๋ฉํ ์๊ณ ๋ฆฌ์ฆ, ํ ํฐ ํ์ ์ ๋ณด๊ฐ ๋ค์ด์๋ค
ํ์ด๋ก๋(๋ด์ฉ) payload
sub, name, iat(์ ํจ๊ธฐ๊ฐ?) ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋ค์ด ์์ผ๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ ๋ณด๋ก ํค,๊ฐ์ ์ง์ ๋ฐ ์ถ๊ฐํ ์ ์๋ค.
์๋ฅผ ๋ค์ด id, name, exp(๋ง๋ฃ์ผ์)
์ํ๋ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์์ง๋ง ์ต์ํ์ ์ ๋ณด๋ง ๋ค์ด์๋ ๊ฒ ์ข๋ค. (๋คํธ์ํฌ๋ก ์ ์ก๋๋ ๊ฐ์ด๋ฏ๋ก ๊ฐ๋ฒผ์ธ์๋ก ์ข์)
ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ์ ๋ช๋ถ~1์๊ฐ ์ ๋๋ก ์งง์ ํธ์ด๋ค.
์๋ช (์๊ทธ๋์ฒ) verify signature
ํค๋, ํ์ด๋ก๋, ์ํฌ๋ฆฟ ํค๊ฐ ํฌํจ๋๋ค.
์ํฌ๋ฆฟ ํค๋ฅผ ์ง์ ํ ํ์ ํ์ด๋ก๋/ํค๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด invalid signature๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๋ง์ฝ ์ํฌ๋ฆฟ ํค๊ฐ ์ ์ถ๋๋ค๋ฉด ์๋ก์ด ์ํฌ๋ฆฟ ํค ๊ฐ์ ์ง์ ํ ์ ์๋ค. (์ด์ ์ํฌ๋ฆฟ ํค๋ก ๋ฐ๊ธ๋ ํ ํฐ์ ๋ฌดํจํ๋๋ค)
โ ํค๋, ํ์ด๋ก๋๋ encryption(์ํธํ)๊ฐ ๋์ง ์๋๋ค. ์ค์ํ ์ ๋ณด๋ ๋ฃ์ง ๋ง์์ผ ํ๋ค.
์ด์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํด ์ค์ ๊ตฌํ์ ํด์ผ๊ฒ ๋ค..!!
'๐ฅ BE ๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ธํ ๋ฆฌ์ ์ด๋ฅผ ์ฌ์ฉํด private DB์ ํฐ๋๋ง์ผ๋ก ์ ์ํ๊ธฐ (0) | 2021.06.11 |
---|---|
์ธํ ๋ฆฌ์ ์ด, ํฌ์คํธ๋งจ ํ๊ฒฝ๋ณ์ ์ค์ ๋ฒ (0) | 2021.06.10 |
[OAuth] ์ํ์ฝ๋ฉ - OAuth 2.0 (0) | 2021.06.01 |
HTTP Response Body์ ์์ธ error message ์ง์ ํด ๋ณด๋ด๊ธฐ (0) | 2021.04.30 |
๋์์ฑ Concurrency (+ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ, ๋์์ฑvs๋ณ๋ ฌ์ฑ) (0) | 2021.03.20 |