Oauth2๋ฅผ ๋„์ž…ํ•˜์‹ ๋‹ค๊ณ ์š”? ๊ผญ ์ฟ ํ‚ค ์‚ฌ์šฉํ•˜์„ธ์š” ^^

์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ Oauth2 ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ SameOrigin์œผ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ฒช์—ˆ๋˜ ์ด์Šˆ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ

Profile Picture
milk717
2023-11-26

์ด ๊ฒŒ์‹œ๊ธ€์˜ ์›๋ณธ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค๋Š” ๊ฐ„ํŽธํ•œ ๋กœ๊ทธ์ธ์„ ์œ„ํ•ด ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ์ง€์›ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ๊ฐ™์€ ์†Œ์…œ ๋กœ๊ทธ์ธ์€ ๋Œ€๋ถ€๋ถ„ Oauth2 ์ธ์ฆ ํ”Œ๋กœ์šฐ๋กœ ์ง„ํ–‰๋˜๋Š”๋ฐ์š”. ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ตฌ๊ธ€ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•ด ์ง์ ‘ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ๋ฐฑ์—”๋“œ์—์„œ ๋ฆฌ๋‹ค์ด๋ž™์…˜์„ ํ†ตํ•ด ์ธ์ฆ, ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ๋ชจ๋‘ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค์—์„œ๋Š” passport๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฑ์—”๋“œ์—์„œ ์ธ์ฆ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ์š”. ์ด๋กœ ์ธํ•ด ์ˆ˜๋งŽ์€ ์ด์Šˆ๋“ค์„ ๊ฒช๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.๐Ÿฅน

์ด ๊ธ€์—์„œ๋Š” ๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค์— ๋ฐฑ์—”๋“œ ์ธ์ฆ, ์ธ๊ฐ€ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๋„์ž…ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์ด์Šˆ์™€ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๊ณผ์ •์— ๋Œ€ํ•ด ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋งŽ์ด ๊ณ ์ƒํ–ˆ๋˜ ๊ฒƒ์— ๋น„ํ•ด ๋‚ด์šฉ ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์œผ๋‹ˆ ์žฌ๋ฏธ์žˆ๊ฒŒ ์ฝ์–ด์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋ฆฌ๋‹ค์ด๋ž™์…˜ url ์ด์Šˆ

[!note] ๋‚˜์ค‘์— ๊ฒช์€ ์ด์Šˆ์— ๋น„ํ•˜๋ฉด ์ด๊ฑด ์ด์Šˆ๋„ ์•„๋‹˜!

๋ฐœ์ƒํ•œ ๋ฌธ์ œ

๋ฐฑ์—”๋“œ ์ธ์ฆ, ์ธ๊ฐ€ ๋กœ๊ทธ์ธ ํ”Œ๋กœ์šฐ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์€ ์œ„์™€ ๊ฐ™์€ ํ”Œ๋กœ์šฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ์š”. ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํฐ ์ด์Šˆ๋Š” 8๋ฒˆ ํ•ญ๋ชฉ์ธ ๋ฆฌ๋‹ค์ด๋ž™์…˜ url์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๋œ ๊ณฐํ„ฐ๋ทฐ ์›นํŽ˜์ด์ง€์—์„œ๋Š” ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ gomterview.com/mypage๋กœ ๋ฆฌ๋‹ค์ด๋ž™์…˜ ๋˜์•ผ ํ–ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” localhost:3000/mypage๋กœ ์ด๋™ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง์€ ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ์œ ์ €๊ฐ€ ์—†์–ด์„œ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, ํ›—๋‚  ์œ ์ €๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ ์„œ๋น„์Šคํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ์ธ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๋งˆ๋‹ค ์„œ๋ฒ„์˜ ์„ค์ •์„ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๊ณผ์ •

์ด ์ด์Šˆ๋ฅผ ์ฒ˜์Œ ๋งŒ๋‚ฌ์„ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์€ ๊ฐœ๋ฐœ์„œ๋ฒ„์™€ ๋ฐฐํฌ์šฉ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์—๋Š” ์ด ๋‘ ๊ฐ€์ง€ ์„œ๋ฒ„๋ฅผ ๊ผญ ๋ถ„๋ฆฌํ• ๊ฑฐ์ง€๋งŒ, ํ˜„์žฌ๋Š” ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ ์ง„๋„๋ฅผ ๋‚˜๊ฐ€๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋ผ์„œ ๊ฐœ๋ฐœ์šฉ ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜ ๋” ๊ตฌ์ถ•ํ•  ์—ฌ์œ ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฐฑ์—”๋“œ๋Š” ์•„์ง Docker์™€ CI/CD๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ „์ด๋ผ์„œ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ํ•œ๋Œ€ ๋” ๋‘๋Š” ๊ฒƒ์€ ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ๋ฆฌ๋‹ค์ด๋ž™์…˜ url ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ˜ํ† ๋‹˜๊ป˜ ์กฐ์–ธ๋„ ๊ตฌํ•ด๋ณด๊ณ  ๋งŽ์€ ์ž๋ฃŒ๋„ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๋ฉ˜ํ† ๋‹˜๊ป˜ ์งˆ๋ฌธํ–ˆ๋˜ ๋‚ด์šฉ!

ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•

๊ฒฐ๊ตญ ๊ฐœ๋ฐœ์šฉ ์„œ๋ฒ„๋ฅผ ํ•œ๋Œ€ ๋” ๋‘๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์–ด์ฐจํ”ผ ์–ธ์  ๊ฐ€๋Š” ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผํ•œ๋‹ค!
  • ํ˜„์žฌ ์„œ๋ฒ„๋ฅผ ํ•œ ๋Œ€๋งŒ ๋‘ฌ์„œ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ์Ÿ๊ณ  ์žˆ๋Š”๋ฐ ์ด๋Š” ์„œ๋ฒ„๋ฅผ ํ•œ๋Œ€๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„ + ๋‚˜์ค‘์— ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„ ๊นŒ์ง€ ๋‘๋ฐฐ๋กœ ์‹œ๊ฐ„์ด ๋‚ญ๋น„๋œ๋‹ค.
  • Docker์™€ CI/CD๋ฅผ ๋„์ž…ํ•˜๋ฉด ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋Š” ๊ฒƒ์ด ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š๋‹ค. (~~๋‹ค๋งŒ ๋จธ๋‹ˆ ์ด์Šˆ๊ฐ€ ์žˆ์„ ๋ฟ~~)
  • ํ™•๋‹ต์€ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์ดํ›„ ๋ฆฌ๋‹ค์ด๋ž™์…˜์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ์•„๋‹ˆ๋ผ ๊ตฌ๊ธ€์ด๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ origin์„ ๊ตฌ๋ถ„ํ•  ๋ฐฉ๋ฒ•์€ ์—†์„ ๊ฒƒ์ด๋‹ค. ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์•ˆํ‹ฐ ํŒจํ„ด์ผ ๊ฒƒ!

๋”ฐ๋ผ์„œ ๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค๋Š” ์„œ๋ฒ„๋ฅผ ํ•œ๋Œ€ ๋” ํ™•์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค ์ •์ฑ… ๋ฌธ์ œ

์ด ์ด์Šˆ๊ฐ€ ์•„๋งˆ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ๋„์ž…์˜ ๋ฉ”์ธ ์ด๋ฒคํŠธ!! ์ž…๋‹ˆ๋‹ค๐Ÿ˜‚ ์œ„์—์„œ ๋ณด์‹  ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค๋Š” ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ set-cookie ํ—ค๋”๋ฅผ ํ†ตํ•ด accessToken์‘๋‹ต์„ ๋ฐ›๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. accessToken์˜ ๊ฐ’์„ ์ฟ ํ‚ค๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ๋กœ ํ•œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฟ ํ‚ค ์„ค์ •์„ httpOnly๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์กฐ์ž‘ํ•  ์ˆ˜ ์—†์–ด์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ๊ณผ ๋™์ผํ•œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋งˆ๋‹ค ํ—ค๋”์— ์ž๋™์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•ด์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋กœ๊ทธ์ธ ๋กœ์ง์ด ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค.
  • SameSite ์˜ต์…˜์„ ์„ค์ •ํ•ด์„œ ์ฟ ํ‚ค๊ฐ€ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ์— ํฌํ•จ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ฟ ํ‚ค์˜ ์žฅ์ ๋งŒ ๋ณด๊ณ  ์ฟ ํ‚ค๋ฅผ ๋„์ž…ํ–ˆ๋Š”๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ์•„์ฃผ ๊ณจ์นซ๋ฉ์–ด๋ฆฌ๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ† ํฐ์„ ์ฟ ํ‚ค๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ํž˜๋“ ์ง€ ํ•จ๊ป˜ ์•Œ์•„๋ด…์‹œ๋‹ค.

์ฟ ํ‚ค์˜ SameSite ์ •์ฑ…์ด๋ž€?

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ์ฟ ํ‚ค์˜ SameSite ์˜ต์…˜์„ ์„ค์ •ํ•ด์„œ CSRF(ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ ์œ„์กฐ)๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ํ˜„์žฌ SameSite ์ •์ฑ…์€ ์•„๋ž˜ ์„ธ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Strict

์ด ์ •์ฑ…์ด ์„ค์ •๋œ ์ฟ ํ‚ค๋Š” ์˜ค์ง ๋™์ผํ•œ ์‚ฌ์ดํŠธ๋กœ์˜ ์š”์ฒญ์—๋งŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋™์ผ ์‚ฌ์ดํŠธ๋ž€ ํ”„๋กœํ† ์ฝœ, ํฌํŠธ(๋ช…์‹œ๋œ ๊ฒฝ์šฐ), ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฐ™์€ ๋‘ ์ฃผ์†Œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด api.gomterview.com๊ณผ www.gomterview.com์€ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ ๋„ค์ž„์„ ๊ฐ€์กŒ์œผ๋‹ˆ ๋™์ผํ•œ ์‚ฌ์ดํŠธ์ฃ . ํ•˜์ง€๋งŒ api.gomterview.com๊ณผ localhost:3000์€ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

Lax (๊ธฐ๋ณธ๊ฐ’)

ํƒ‘ ๋ ˆ๋ฒจ ํƒ์ƒ‰์— ๋Œ€ํ•œ ์š”์ฒญ์—๋งŒ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ํƒ‘ ๋ ˆ๋ฒจ ํƒ์ƒ‰์ด๋ž€ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋Š”๋ฐ์š”. ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜์ž๋ฉด window.location.href๋ฅผ ํ†ตํ•œ ๋งํฌ ์ด๋™์— ์˜ํ•œ GET ์š”์ฒญ์ด ์ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ด ์ •์ฑ…์„ ๊ฐ€์ง„ ์ฟ ํ‚ค๋Š” axios๋‚˜ fetch ๋“ฑ์„ ํ†ตํ•ด api ์š”์ฒญ์„ ํ•  ๋•Œ๋Š” ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

None

๋ชจ๋“  ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ์— ๋Œ€ํ•ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋‹จ, SameSite=None ์ •์ฑ… ์ฟ ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ Secure ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ์š”. Secure ํ”Œ๋ž˜์Šค๋ฅผ ์„ค์ •ํ•œ ์ฟ ํ‚ค๋Š” https๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋กœ์ปฌํ˜ธ์ŠคํŠธ์—์„œ ๋ฐฐํฌ๋œ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋กœ์ปฌํ˜ธ์ŠคํŠธ๋„ https ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณฐํ„ฐ๋ทฐ๋Š” ์–ด๋–ค ์ฟ ํ‚ค ์ •์ฑ…์„ ์‚ฌ์šฉํ–ˆ์„๊นŒ?

์‚ฌ์‹ค ๋ฐฐํฌ๋œ ๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค์—์„œ๋Š” ์ฟ ํ‚ค์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ „ํ˜€ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‘˜๋‹ค gomterview.com ์ด๋ผ๋Š” ๋„๋ฉ”์ธ์—์„œ DNS ๋ ˆ์ฝ”๋“œ๋งŒ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ €์ƒ์—์„œ ๋™์ผํ•œ ์ถœ์ฒ˜๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ํ•˜์ง€๋งŒ ์ฟ ํ‚ค์— ๋Œ€ํ•œ ๋ฌธ์ œ๋Š” ์–ธ์ œ๋‚˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค! ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ์–ด๋–จ๊นŒ์š”? ๋ฐฐํฌ ์„œ๋ฒ„๋Š” gomterview.com ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์›น์‚ฌ์ดํŠธ๋Š” localhost ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋‘˜์€ ๋™์ผ ์ถœ์ฒ˜๊ฐ€ ์•„๋‹ˆ์ฃ . ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•œ ๋Œ€์‘์„ ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ํ˜„์žฌ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์€ api ์š”์ฒญ์ด ์•„๋‹ˆ๋ผ ๋งํฌ ์ด๋™์„ ํ†ตํ•œ ์ƒ์œ„ ํƒ์ƒ‰์œผ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SameSite์˜ ๊ธฐ๋ณธ๊ฐ’์ธ lax๋กœ ์„ค์ •ํ•ด๋„ ๋ฐฑ์—”๋“œ์˜ ์ฟ ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ž˜ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณฐํ„ฐ๋ทฐ๋Š” SameSite=Lax์˜ ์ฟ ํ‚ค ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž˜ ์„ค์ •๋˜๋Š”๋ฐ ๋ญ๊ฐ€ ๋ฌธ์ œ์•ผ?

์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ์ด gomterview.com์œผ๋กœ ์„ค์ •๋˜์–ด์žˆ์Œ

๋ฆฌ๋‹ค์ด๋ž™์…˜๋„ ์ž˜ ์ˆ˜ํ–‰๋˜๊ณ , ์ฟ ํ‚ค๋„ ์ž˜ ์„ค์ •๋˜๊ณ  ๋ชจ๋“ ๊ฒŒ ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋  ์ค„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ํฐ ์ด์Šˆ๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ localhost๋กœ ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•œ api ์š”์ฒญ์— ์ฟ ํ‚ค๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ฟ ํ‚ค์˜ domain ์„ค์ •์ด .gomterview.com์œผ๋กœ ๋˜์–ด์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋ชจ๋“  ์š”์ฒญ์— ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ ๊ฐ’๊ณผ ํ˜„์žฌ api ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ฃผ์†Œ๊ฐ€ ์ผ์น˜ํ•  ๋•Œ๋งŒ ์š”์ฒญ์— ์ฟ ํ‚ค๋ฅผ ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณฐํ„ฐ๋ทฐ ์„œ๋น„์Šค์˜ ์ฟ ํ‚ค๋Š” SameSite=Lax๋ผ์„œ ํฌ๋กœ์Šค ๋„๋ฉ”์ธ๊ฐ„ ์ƒ์œ„ ํƒ์ƒ‰์ด ์•„๋‹Œ ์š”์ฒญ์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๋„ํ–ˆ๋˜ ๊ฒƒ๋“ค

๋งŒ์•ฝ ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ ์„ค์ •์„ localhost๋กœ ์„ค์ •ํ•œ๋‹ค๋ฉด?

์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ ์„ค์ •์ด localhost๋ผ๋ฉด localhost -> localhost๋กœ์˜ ์š”์ฒญ์—๋Š” ์ฟ ํ‚ค๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Webpack dev server์˜ proxy๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์š”์ฒญ์„ localhost๋กœ ๋ฐ”๊พธ๋ฉด ์ฟ ํ‚ค๊ฐ€ ์ž˜ ์„ค์ •๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฐ€์„ค์„ ์„ธ์šฐ๊ณ  ์‹คํ—˜์„ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ–ˆ์„ ๋•Œ

[!tip] ์—ฌ๊ธฐ์„œ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ์ ! localhost ์›นํŒฉ ํ”„๋ก์‹œ๋ถ€ํ„ฐ ์„œ๋ฒ„๊นŒ์ง€๋Š” ํฌ๋กœ์Šค ๋„๋ฉ”์ธ์ธ๋ฐ ์–ด๋–ป๊ฒŒ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ฐ”๋กœ ์ฟ ํ‚ค์™€ CORS ์ •์ฑ…์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ดํŠธ๋ถ€ํ„ฐ ์›นํŒฉ ํ”„๋ก์‹œ๊นŒ์ง€ ๊ฐ€๋Š” ์š”์ฒญ์€ ๋ธŒ๋ผ์šฐ์ €์˜ ์ •์ฑ…์„ ๋”ฐ๋ผ์•ผํ•˜์ง€๋งŒ, ์›นํŒฉ ํ”„๋ก์‹œ๋ถ€ํ„ฐ ์‹ค์ œ ์„œ๋ฒ„๊นŒ์ง€์˜ ์š”์ฒญ์€ ์„œ๋ฒ„์™€ ์„œ๋ฒ„๊ฐ„์˜ ์š”์ฒญ์ด๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ์ •์ฑ…์„ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ๋กœ์Šค ๋„๋ฉ”์ธ๊ฐ„์—๋„ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ์š”. ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ์ด localhost๊ฐ€ ๋˜๋ฉด ์„œ๋ฒ„์—์„œ set-cookie ํ—ค๋”๋ฅผ๋ธŒ๋ผ์šฐ์ €์— ์ฟ ํ‚ค๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(Same-Origin Policy)์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

Webpack dev Server Proxy์—์„œ ์ฟ ํ‚ค ๋„๋ฉ”์ธ์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด?

์›นํŒฉ dev server์˜ ํ”„๋ก์‹œ๋Š” http-proxy-middleware๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฏธ๋“ค์›จ์–ด์—์„œ๋Š” cookieDomainRewrite๋ผ๋Š” ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค ๋„๋ฉ”์ธ ๋ณ€๊ฒฝ ์˜ต์…˜ ํ•˜์ง€๋งŒ ์ด ์˜ต์…˜๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์„œ๋ฒ„์—์„œ set-cookie ์‘๋‹ต์„ ๋‚ด๋ ค์ฃผ๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์˜ api ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋งํฌ ์ด๋™์„ ํ†ตํ•œ ์ƒ์œ„ํƒ์ƒ‰์— ๋Œ€ํ•œ ์‘๋‹ต์ด๋ฏ€๋กœ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

nginx proxy๋ฅผ ์„ค์ •ํ•œ๋‹ค๋ฉด

nginx ํ”„๋ก์‹œ์—์„œ ์ฟ ํ‚ค ๋„๋ฉ”์ธ์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒฝ์šฐ nginx๋กœ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ•ด์„œ ์ฟ ํ‚ค ๋„๋ฉ”์ธ gomterview -> localhost๋กœ ๋ณ€๊ฒฝํ•ด์ค€ ํ›„ ์›นํŒฉ ํ”„๋ก์‹œ๋กœ ์‘๋‹ต์„ ๋‚ด๋ ค์ค€๋‹ค๋ฉด ์ฟ ํ‚ค๊ฐ€ ์„ค์ •๋˜๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ ์—†๊ณ , ์ฟ ํ‚ค๊ฐ€ api ์š”์ฒญ์— ํฌํ•จ๋ผ์„œ ๋ณด๋‚ด์ง€๋Š” ๊ฒƒ์—๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ• ๋˜ํ•œ ํ†ตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋กœ๊ทธ์ธ ์‘๋‹ต์ด ๋ฆฌ๋‹ค์ด๋ž™์…˜ ์‘๋‹ต์ด๋ผ์„œ ์›นํŒฉ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ๋ฐ›์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.๐Ÿ˜ญ๐Ÿ˜ญ nginx ํ”„๋ก์‹œ์—์„œ ์ฟ ํ‚ค ๋„๋ฉ”์ธ์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋”๋ผ๋„ ๋ฆฌ๋‹ค์ด๋ž™์…˜ ์‘๋‹ต์„ ํ†ตํ•ด ์„ค์ •๋˜๋Š” ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ € ์ •์ฑ…์„ ํ”ผํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์„ค์„ ์„ธ์šฐ๊ฒŒ ๋œ ์Šคํ† ๋ฆฌ๐Ÿ˜‚๐Ÿ˜‚

ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ๊ฐ€์ฝ”๋“œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด๋ณด์ž

ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ๊ฐ€ ์ฝ”๋“œ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ ํ”Œ๋กœ์šฐ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜จ ํ›„ ๋ฐฑ์—”๋“œ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ณ ๋ คํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์˜ ์žฅ์ 
  • ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ api ์š”์ฒญ์„ ํ†ตํ•ด ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›๊ธฐ๋•Œ๋ฌธ์— ํ”„๋ก์‹œ์—์„œ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ํ—ค๋”๋ฅผ ํ†ตํ•ด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค ์ •์ฑ…์œผ๋กœ ๊ณ ๋ฏผํ•  ํ•„์š”๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜์ง€ ์•Š์€ ์ด์œ 
  • ํด๋ผ์ด์–ธํŠธ์—์„œ oauth ๊ด€๋ จ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค
  • ๋กœ๊ทธ์ธ ๊ด€๋ จ ๋ฐฑ์—”๋“œ ๋กœ์ง์ด ๋ชจ๋‘ ์™„๋ฃŒ๋œ ์ƒํƒœ๋ผ์„œ ์ „๋ถ€ ๋ฐ”๊พธ๊ธฐ์—๋Š” ๋ฆฌ์Šคํฌ๊ฐ€ ์ปธ์Šต๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์€ ์ง€๊ธˆ๊นŒ์ง€ ๊ฒช์—ˆ๋˜ ๋ฌธ์ œ๋“ค์„ ๋ฐ”๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹จ์ ์ด ๋„ˆ๋ฌด ์น˜๋ช…์ ์ด๋ผ์„œ ์ฑ„ํƒํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

SameSite=None

์‚ฌ์‹ค ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๋œ ์„œ๋ฒ„๋Š” ์ด๋ฏธ https๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—๋งŒ https๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ชจ๋“ ๊ฒŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž 3๋ช…์˜ ์ปดํ“จํ„ฐ์— ๋ชจ๋‘ https ์„ค์ •์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ํ™˜๊ฒฝ์˜ https ์„ค์ •์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๊ณต์œ ํ•œ ํ›„ ํŒ€์›๋“ค์ด ์ง์ ‘ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ํŒ€์›๋“ค๊ณผ ๋งŒ๋‚˜๋Š” ๋‚  ์ด ๋‚ด์šฉ์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ์ค‘์š”๋„๊ฐ€ ํฌ์ง€ ์•Š์€ ๋กœ๊ทธ์ธ ์ž‘์—…์— ๋ชจ๋‘๊ฐ€ ์—๋„ˆ์ง€๋ฅผ ํˆฌ์žํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒ€์›๋ถ„๋“ค์ด ์ตœ๋Œ€ํ•œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ณ ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ•ด๊ฒฐ์ฑ…๋„ ๊ธฐ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€?

์œ„์—์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฑฐ์ฐฝํ•œ ํ•ด๊ฒฐ์ฑ…๋“ค์— ๋น„ํ•ด ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํŠธ๋ฆญ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ ๊ฐœ๋ฐœ์šฉ token ๋ฐœ๊ธ‰ api๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋žœ๋”ฉ ํ™”๋ฉด์˜ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์˜ ๋™์ž‘์„ env์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์„œ ๊ฐœ๋ฐœ ๋ชจ๋“œ์ผ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ์ฟ ํ‚ค๊ฐ€ ์„ค์ •๋˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์šฉ ํ† ํฐ ๋ฐœ๊ธ‰ ๋กœ์ง ๊ฐœ๋ฐœ ๋ชจ๋“œ์ผ ๋•Œ ํ† ํฐ ๋ฐœ๊ธ‰ ์š”์ฒญ์„ ์„œ๋ฒ„์— ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” Authorization Header๋ฅผ ํ†ตํ•ด accessToken์„ ๋ฐœ๊ธ‰ํ•ด์ค๋‹ˆ๋‹ค. Authorization Header๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”์ด์ƒ ์ฟ ํ‚ค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋กœ์Šค ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๊ณ ๋ ค๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ฟ ํ‚ค๋ฅผ ์ง์ ‘ ํ—ค๋”์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์—ˆ์ฃ . ๊ทธ๋ž˜์„œ ํด๋ผ์ด์–ธํŠธ์ƒ์—์„œ accessToken์„ localhost ๋„๋ฉ”์ธ์˜ ์ฟ ํ‚ค๋กœ ์ง์ ‘ ์„ค์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ’์ด ๋งค ์š”์ฒญ์— ์ž๋™์œผ๋กœ ํฌํ•จ๋˜๋„๋ก ์›นํŒฉ ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋‹ˆ ๊ธฐ์กด์˜ api ์š”์ฒญ ํ•จ์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ , ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๋ณด๋‚ด๋Š” ๋ฒ„ํŠผ์—๋งŒ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์˜ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

์ง€๊ธˆ๊นŒ์ง€ Oauth2 ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์—ˆ๊ณ , ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์€ ๋ ˆํผ๋Ÿฐ์Šค๋„ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ ๊ตฌํ˜„์— ๋Œ€ํ•œ Jira ํ‹ฐ์ผ“์„ 3์‹œ๊ฐ„์œผ๋กœ ์˜ˆ์ƒํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ณด๋‹ˆ ์ •๋ง ํ—›์›ƒ์Œ์ด ๋‚˜์˜ค๋„ค์š”๐Ÿ˜‚๐Ÿ˜‚ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์— ๋Œ€ํ•œ Jira ํ‹ฐ์ผ“ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์ œ๊ฐ€ ๊ตฌํ˜„ํ–ˆ๋˜ ๋กœ๊ทธ์ธ์€ ๋ชจ๋‘ Authorization ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ์ฟ ํ‚ค์™€ ๋ธŒ๋ผ์šฐ์ € ์ •์ฑ…์— ๋Œ€ํ•ด์„œ ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์ฃ . ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋”œ๋ ˆ๋งˆ์— ๋น ์ง€๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. '์ด๋ฏธ ์•Œ๊ณ ์žˆ๋Š” ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ• ๊นŒ? ์•„๋‹ˆ์•ผ ๊ทธ๋ž˜๋„ ์ด๋งŒํผ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ ํฌ๊ธฐํ• ์ˆ˜๋Š” ์—†์ง€' ์ด ๋‘ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ๊ณ„์† ๋จธ๋ฆฟ์†์—์„œ ๋– ๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด ์ž‘์—…๋ณด๋‹ค ์ค‘์š”ํ•œ ์ž‘์—…์€ ๋งŽ๊ณ , ์ฟ ํ‚ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Docker, nginx, reverse proxy ๋“ฑ์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ  ์ ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์จ ์Œ“์•„์•ผ ํ•  ์—ญ๋Ÿ‰์—์„œ๋Š” ์ข€ ๋ฒ—์–ด๋‚ฌ๋‹ค๋Š” ์ƒ๊ฐ๋„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ~~๊ทธ์น˜๋งŒ ํฌ๊ธฐํ•˜๊ธฐ์—” ๋„ˆ๋ฌด ๋งŽ์€ ๊ธธ์„ ์™€๋ฒ„๋ ธ๋‹ค...!~~ ๊ทธ๋ž˜์„œ ํ•˜๋ฃจ์— 2์‹œ๊ฐ„ ์ด์ƒ ๊ณ ๋ฏผํ•˜์ง€ ๋ง์ž๋Š” ๋‚˜๋งŒ์˜ ๊ทœ์น™์„ ์„ธ์šฐ๊ณ  ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ๋ณ‘ํ–‰ํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์ฐฝํ•˜๊ฒŒ ๊ณ ๋ฏผํ•œ ๊ฒƒ์— ๋น„ํ•ด ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฒŒ ๋ผ์„œ ์•ฝ๊ฐ„ ํ—ˆ๋ฌดํ•œ ๊ฐ๋„ ์žˆ์ง€๋งŒ, ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๋Š” ๊ณผ์ •๋™์•ˆ ์ •๋ง ๋จธ๋ฆฌ๋ฅผ ์‹ธ๋งค๋ฉฐ ๋ชฐ๋‘ํ•˜๊ฒŒ ๋ผ์„œ ์žฌ๋ฐŒ๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ˆ„๊ฐ€ ์ œ๊ฒŒ ์ฟ ํ‚ค์— ๋Œ€ํ•ด ๋ฌป๋Š”๋‹ค๋ฉด ์•„์ฃผ ๋‹น๋‹นํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ค„ ์ž์‹ ๊ฐ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค!!

[!info] ์ œ 2์ฃผ๊ฐ„์˜ ๊ณ ๋ฏผ์œผ๋กœ๋Š” ํ˜„์žฌ ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์˜ ํ•ด๊ฒฐ์ฑ…์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ์ด๋ณด๋‹ค ๋” ๋‚˜์€ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•œ ๋‚ด์šฉ์ด ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€๋กœ ํ”ผ๋“œ๋ฐฑ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜Š

๊ด€๋ จ PR
ยฉ 2024 Adultlee. All rights reserved.Made with โค by ์ด์„ฑ์ธ