
1. ์ฟ ํค ์ธ์ฆ ๋ฐฉ์
์ฟ ํค๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ key value ํํ๋ก ์ ์ฅํด๋๋ ์์ ๊ธฐ๋กํ์ผ์ด๋ค.
์ฟ ํค๋ฅผ ์ด์ฉํ์ฌ์ ๊ฐ๋จํ ๋ก๊ทธ์ธ์ ๊ตฌํํ ์ ์๋ค.
์ฟ ํค ๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์

ํด๋ผ์ด์ธํธ์์๋ ๋ก๊ทธ์ธ์ด ํ์ํ ์์ฒญ์ ํ ๋๋ง๋ค ๋ค์๊ณผ ๊ฐ์ด ์ฟ ํค์ id, pw ์ ๋ณด๋ฅผ ๋ด์์ ์ ์กํ๋ค.
์์ ๊ฐ์ ์์
์ ์ํํ๊ธฐ ์์์๋ ์ด๋ฏธ ๋ธ๋ผ์ฐ์ ์์ ๋ก๊ทธ์ธ์ด ์งํ๋ ํ ์ ์ ์ ๋ณด๊ฐ ์ฟ ํค์ ๋ค์ด์์ด์ผํ๋ค.
ํ์ง๋ง ์ฟ ํค ์ธ์ฆ ๋ฐฉ์์ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์๋ค.
1. ์ฟ ํค๊ฐ ์ ํจ์ฑ ๊ฒ์ฆ์ด ํ๋ค๋ค. (์กฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ค.)
2. ์ค๊ฐ์ ํ์ทจํด์ id,pw ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
3. ์๋ฒ์์ ๋งค๋ฒ ์ธ์ฆ์ ์ํํด์ผํ๋ค.
4. ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ฟ ํค ํ์์ด ํต์ผ๋์ด ์์ง ์์์ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณต์ ๊ฐ ์ด๋ ต๋ค.
๋ฐ๋ผ์ ์ฟ ํค๋ง ์ด์ฉํ ์ธ์ฆ ๋ฐฉ์์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ธ์
์ ์ฌ์ฉํ ์ธ์ฆ ๋ฐฉ์์ด ๋์ค๊ฒ ๋์๋ค.
2. ์ธ์ ์ธ์ฆ ๋ฐฉ์
์ธ์
์ ์ฌ์ฉ์์ ์ฐ๊ฒฐ์ ํ๋์ ์ํ(์ธ์
)์ผ๋ก ์ ์ง์ํค๋ ๊ธฐ์ ์ ๋งํ๋ค.
์ธ์ ๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์
์ฟ ํค๋ ๋งค๋ฒ id,pw ๊ฐ์ ๋ฏผ๊ฐ ์ ๋ณด๋ฅผ ์ ์กํด์ผํ๋ค๋ฉด, ์ธ์
์ ์๋ฒ์ ์ธ์
์ ์ฅ์์ ์ธ์
์ ๋ณด๋ฅผ ์ ์ฅํจ์ผ๋ก์จ ๋ณด์์ ๊ฐํํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์ธ์ฆ์ด ํ์ํ ์์ฒญ์ ํ์ํ ๋ ์ฟ ํค์ ์ธ์
์ธ์ฆ ์ ๋ณด๋ฅผ ํจ๊ป ๋ณด๋ด๊ณ ์๋ฒ๋ ์ด๋ฅผ ์ธ์
์ ์ฅ์์ ๋ด์ฉ๊ณผ ๋น๊ตํด์ ์ธ์ฆ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
(๋ง์น ๋งคํ์์์ ํฐ์ผ์ ์ ๋ฐ์ ๋ผ์ ์๋์ด๋ ๋๋ ๊ฐ์ง๋ ์๋ฆฌ์ ๋น์ทํ๋ค.)
์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์ธ์ฆ ์์ฒญ ์์ ๋ฏผ๊ฐ ์ ๋ณด๋ฅผ ๋คํธ์ํฌ ์์ ๋
ธ์ถ ์ํค๋ ๊ฒ์ ์๋ฐฉํ ์ ์๋ค.
ํ์ง๋ง ์ธ์
๋ฐฉ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์๊ณ ์๋ค.
1. ์๋ฒ๊ฐ ์ฌ๋ถํ
๋๋ฉด ์ธ์
์ ์ฅ์๊ฐ ์ด๊ธฐํ๋๋ค.
2. ์ค์ผ์ผ ์์ ๋ฐฉ์์ ํ์ฅ์ด ์ด๋ ต๋ค. -> ๋ชจ๋ ์๋ฒ์ ์ธ์
์ ๋ณด๋ฅผ ๋๊ธฐํ ์์ผ์ผํ๋ค.
3. ์ฌ์ฉ์์ ์๊ฐ ๋ง์์ง๋ฉด ๊ด๋ฆฌํด์ผํ๋ ์ธ์
์ ๋ณด๊ฐ ๋ง์์ ธ์ ์๋ฒ์ ๋ถ๋ด์ด ๋๋ค. -> ๋ฌด์ํ(stateless) ์๋ฐ
4. ์ธ์
์ธ์ฆ ์ ๋ณด ํ์ทจ์ ์ํ์ด ์๋ค.
3. JWT ์ธ์ฆ ๋ฐฉ์
JWT(Json Web Token) ๋ฐฉ์์ ํ ํฐ ๊ธฐ๋ฐ์ ์ธ์ฆ ๋ฐฉ์์ด๋ค. ์ด ๋ฐฉ์์ ํตํด ๊ทธ ๋์์ ์ธ์ฆ ๋ฐฉ์์์ ๋์๋ ๋ฌธ์ ๋ค์ ์ด๋์ ๋ ๊ฐ์ ํ ์ ์๋ค.
JWT ๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์

JWT ํ ํฐ ๊ตฌ์กฐ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
header
ํค๊ฐ, ํ ํฐ ์ ํ, ์ํธํ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ์ ๋ณด๋ค์ ๋ด๊ณ ์๋ค.
payload
ํด๋ ์(claim)์ด๋ผ๊ณ ํ๋ ์ ์ ์ ํ ํฐ ์ธ์ฆ ์ ๋ณด๋ฅผ key/value ํํ๋ก ๋ด๊ณ ์๋ค.
JWT ์คํ์์๋ ํ์ค claim ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์๋ค. (๊ถ์ฅ ์ฌํญ์ผ ๋ฟ ๊ผญ ์งํฌ ํ์๋ ์์ ๊ฒ ๊ฐ๋ค)
iss (Issuer, ํ ํฐ ๋ฐ๊ธ์): . ๋๊ฐ ํ ํฐ์ ๋ฐ๊ธ(์์ฑ)ํ๋์ง
sub (Subject, ํ ํฐ ์ฃผ์ ): ์ฃผ์ ์ ๋ํ ์ค๋ช
์ ๋ํ๋
๋๋ค.
aud (Audience, ํ ํฐ ์์ ์): ๋๊ตฌ์๊ฒ ํ ํฐ์ด ์ ๋ฌ๋๋ ๊ฐ
exp (Expiration, ๋ง๋ฃ ์๊ฐ): ์ธ์ ํ ํฐ์ด ๋ง๋ฃ๋๋์ง
nbf (Not Before): ์ ์๋ ์๊ฐ ์ดํ์ ํ ํฐ์ด ํ์ฑ
iat (Issued At, ํ ํฐ ๋ฐ๊ธ ์๊ฐ): ์ธ์ ํ ํฐ์ด ๋ฐ๊ธ๋์๋์ง
jti (JWT ID, ํ ํฐ ์๋ณ์): ํ ํฐ์ ๊ณ ์ ์๋ณ์
signature
JWT์์ ๊ฐ์ฅ ๋ฏผ๊ฐํ ๋ถ๋ถ์ด๋ค. ํด๋น ๊ฐ์ผ๋ก ํ ํฐ์ ์ ํจ์ฑ์ ํ๋ณํ๋ฉฐ ์ด๋ ์ฌ์ฉ๋๋ ์ํฌ๋ฆฟ ๊ฐ์ ์ ์ถ์ํค์ง ์๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค.
์ํฌ๋์ฒ๋ ํค๋+ํ์ด๋ก๋+์ํฌ๋ฆฟ ๊ฐ์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ํธํํ์ฌ์ ๋ง๋ค์ด์ง๋ค.
๋ฐ๋ผ์ ์ํฌ๋ฆฟ ๊ฐ์ด ์กฐ๊ธ์ด๋ผ๋ ๋ค๋ฅด๋ค๋ฉด ํ ํฐ ๋ด์ฉ์ ์์ ๋ณํ๊ฒ ๋์ด์ ์ธ์ฆ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ํค๋์ ํ์ด๋ก๋๋ ์ํธํ๊ฐ ์๋ base64 ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉ ๋๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ 3์๋ ํ ํฐ๋ง์ผ๋ก๋ ํด๋น ๊ฐ๋ค์ ์ด๋ํ ์ ์๋ค. ๋ฐ๋ผ์ ์๋ณ์๋ฅผ ์ ์ธํ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ ์ต๋ํ ๋ฃ์ง ๋ง์์ผํ๋ค!
JWT๋ ํด๋ผ์ด์ธํธ์๊ฒ ํ ํฐ์ ์ฃผ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํ ํฐ์ด ํ์ทจ ๋นํ๋ค๋ฉด ์๋ฒ์์ ๋ฑํ ํ ์ ์๋ ๊ฒ์ด ์๋ค.
์ด ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฆฌํ๋ ์ ํ ํฐ์ ์ด์ฉํด์ ๊ธฐ์กด ํ ํฐ์ ์ ํจ ์๊ฐ์ ์งง๊ฒ ๊ฐ์ ธ๊ฐ๊ณ ์๋ก์ด ํ ํฐ์ ์ง์ํด์ ๋ฐ๊ธํด์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
ํ์ง๋ง ์ผ์ ์๊ฐ ๋์์ ํ์ทจ๋ ํ ํฐ์ด ์ฌ์ฉ๋ ์ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ๋ฒ์ ์๋๋ค. ๊ทธ๋์ ์ํ ๊ฐ์ด ๋ณด์์ ๊ต์ฅํ ๋ฏผ๊ฐํ ๊ณณ์์๋ ์ฌ๋ฌ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด์ ๋ณด์์ ๊ฐํํ๋ค.
'Computer Science > ๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ก๋ ๋ฐธ๋ฐ์(Load Balancer)๋ (๊ฐ๋ , ์๊ณ ๋ฆฌ์ฆ ์ข ๋ฅ) (0) | 2024.02.21 |
---|---|
DNS๋? (0) | 2024.02.19 |
HTTP , HTTPS์ ํน์ง๊ณผ ์ฐจ์ด (0) | 2024.02.12 |
TCP์ UDP (0) | 2024.02.07 |
๋คํธ์ํฌ ๊ฐ๋ ์ ๋ฆฌ (ํ๋กํ ์ฝ , ๊ณ์ธต ๊ตฌ์กฐ , IP) (0) | 2024.01.30 |