Search
๐Ÿช™

Login with JWT(Json Web Token)

๐Ÿง‘๐Ÿผโ€๐Ÿš€ JWT๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ 

โ—๋ฐ์Šคํฌํ†ฑ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋ฐ”์ผ์—์„œ๋„ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

๐Ÿ™‹๐Ÿปโ€โ™‚๏ธ ์ด ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ๋‚˜๋ฉด

JWT๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

JWT๋ฅผ ์ด์šฉํ•œ Login ํ๋ฆ„

ํด๋ผ์ด์–ธํŠธ์—์„œ ๋กœ๊ทธ์ธ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๊ทธ์ค‘ ์šฐ๋ฆฌ๋Š” JWT๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. JWT๋Š” ๋ชจ๋ฐ”์ผ๊ณผ ์›น์˜ ์ธ์ฆ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ์š”. ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ์•”ํ˜ธํ™”์‹œํ‚จ ํ† ํฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด JWT๋ฅผ ์ด์šฉํ•˜์—ฌ Access Token์„ HTTP Header์— ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„๋กœ API๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

JWT

JWT ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์ง€๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—†์ด๋„ ํ•ด๋‹น ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
Header: ์œ„ 3๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•  ๋ฐฉ์‹๊ณผ ํƒ€์ž…์ด ๋“ค์–ด๊ฐ„๋‹ค.
โ€ข
Payload: ์„œ๋ฒ„์—์„œ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์ €์˜ ๊ณ ์œ  id๊ฐ’, ์œ ํšจ๊ธฐ๊ฐ„์ด ๋“ค์–ด๊ฐ„๋‹ค.
โ€ข
Signature: Base64 ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•œ Header,payload ๊ทธ๋ฆฌ๊ณ  SECRET KEY๋ฅผ ๋”ํ•œ ํ›„ ์„œ๋ช…๋œ๋‹ค.

Authentication ํ๋ฆ„

1.
์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค.
2.
์„œ๋ฒ„์—์„œ๋Š” ๊ณ„์ •์ •๋ณด๋ฅผ ์ฝ์–ด ์‚ฌ์šฉ์ž๋ฅผ ํ™•์ธ ํ›„, ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ ํ•œ ID๊ฐ’์„ ๋ถ€์—ฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐํƒ€ ์ •๋ณด์™€ ํ•จ๊ป˜ Payload์— ๋„ฃ๋Š”๋‹ค.
โ€ข
JWT ํ† ํฐ์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•œ๋‹ค.
3.
์•”ํ˜ธํ™”ํ•  SECRET KEY๋ฅผ ์ด์šฉํ•ด ACCESS TOKEN์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
4.
ํด๋ผ์ด์–ธํŠธ๋Š” Access Token์„ ๋ฐ›์•„ ์ €์žฅํ•œ๋‹ค.
5.
ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ๋งˆ๋‹ค ํ† ํฐ์„ ํ—ค๋”์— ์‹ค์–ด ๋ณด๋‚ธ๋‹ค.
6.
์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น ํ† ํฐ์˜ Verify Signature๋ฅผ SECRET KEY๋กœ ๋ณตํ˜ธํ™”ํ•œ ํ›„, ์กฐ์ž‘ ์—ฌ๋ถ€, ์œ ํšจ๊ธฐ๊ฐ„์„ ํ™•์ธํ•œ๋‹ค.
7.
๊ฒ€์ฆ์ด ์™„๋ฃŒ๋œ๋‹ค๋ฉด, Payload๋ฅผ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ID์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

Bearer HTTP Authentication

API์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” access token์„ API ์„œ๋ฒ„์— ์ œ์ถœํ•ด์„œ ์ธ์ฆ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JWT ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์ฆ ํƒ€์ž…์„ bearer ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ Bearer Authentication๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ† ํฐ์€ ์•„๋ž˜์ฒ˜๋Ÿผ ์š”์ฒญ ํ—ค๋”์˜ Authorization ํ•„๋“œ์— ๋‹ด์•„์ ธ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
Authorization: <type> <credentials>
JSON
์ธ์ฆ ํƒ€์ž…์€ bearer ์ด์™ธ์—๋„ Basic, Digest, HOBA, Mutual ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“˜ ์ •๋ฆฌ

โ€ข
JWT๋Š” ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ์•”ํ˜ธํ™”์‹œํ‚จ ํ† ํฐ์„ ์˜๋ฏธํ•œ๋‹ค.
โ€ข
JWT๋Š” Header, Payload, Signature๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
โ€ข
JWT ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ Bearer Authentication๋ผ๊ณ  ํ•œ๋‹ค.

๐Ÿ”— ์ฐธ๊ณ  ๋งํฌ