์ฟ ํค๋ฅผ ์ฌ์ฉํ Oauth2 ๋ก๊ทธ์ธ์ ์งํํ๋ฉด์ SameOrigin์ผ๋ก ์ธํด ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ฒช์๋ ์ด์์ ๋ํ ์ด์ผ๊ธฐ
๊ณฐํฐ๋ทฐ ์๋น์ค๋ ๊ฐํธํ ๋ก๊ทธ์ธ์ ์ํด ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ์ง์ํ๊ธฐ๋ก ํ์ต๋๋ค. ๊ตฌ๊ธ ๋ก๊ทธ์ธ๊ฐ์ ์์ ๋ก๊ทธ์ธ์ ๋๋ถ๋ถ Oauth2 ์ธ์ฆ ํ๋ก์ฐ๋ก ์งํ๋๋๋ฐ์. ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ํด๋ผ์ด์ธํธ์์ ๊ตฌ๊ธ ์ฌ์ดํธ์ ์ ์ํด ์ง์ ์ธ๊ฐ ์ฝ๋๋ฅผ ๋ฐ์์ค๋ ๋ฐฉ๋ฒ์ด๊ณ , ๋ ๋ฒ์งธ๋ ๋ฐฑ์๋์์ ๋ฆฌ๋ค์ด๋์ ์ ํตํด ์ธ์ฆ, ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ด๋นํ๋ ๊ฒ์ ๋๋ค. ๊ณฐํฐ๋ทฐ ์๋น์ค์์๋ passport๋ฅผ ์ฌ์ฉํด ๋ฐฑ์๋์์ ์ธ์ฆ ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๋๋ฐ์. ์ด๋ก ์ธํด ์๋ง์ ์ด์๋ค์ ๊ฒช๊ฒ ๋์์ต๋๋ค.๐ฅน
์ด ๊ธ์์๋ ๊ณฐํฐ๋ทฐ ์๋น์ค์ ๋ฐฑ์๋ ์ธ์ฆ, ์ธ๊ฐ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๋์ ํ๋ฉด์ ๊ฒช์๋ ์ด์์ ์ด์ ๋ํ ํด๊ฒฐ ๊ณผ์ ์ ๋ํด ๋ด๊ณ ์์ต๋๋ค. ์ ๋ง ๋ง์ด ๊ณ ์ํ๋ ๊ฒ์ ๋นํด ๋ด์ฉ ์์ฒด๋ ์ด๋ ต์ง ์์ผ๋ ์ฌ๋ฏธ์๊ฒ ์ฝ์ด์ฃผ์๊ธธ ๋ฐ๋๋๋ค!
[!note] ๋์ค์ ๊ฒช์ ์ด์์ ๋นํ๋ฉด ์ด๊ฑด ์ด์๋ ์๋!
๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ์์ ๊ฐ์ ํ๋ก์ฐ๋ก ๊ตฌ์ฑ๋์ด ์์๋๋ฐ์. ์ฌ๊ธฐ์ ๊ฐ์ฅ ํฐ ์ด์๋ 8๋ฒ ํญ๋ชฉ์ธ ๋ฆฌ๋ค์ด๋์ url์ด์์ต๋๋ค. ๋ฐฐํฌ๋ ๊ณฐํฐ๋ทฐ ์นํ์ด์ง์์๋ ๋ก๊ทธ์ธ ์ฑ๊ณต์ gomterview.com/mypage๋ก ๋ฆฌ๋ค์ด๋์ ๋์ผ ํ์ง๋ง, ๊ฐ๋ฐ ํ๊ฒฝ์์๋ localhost:3000/mypage๋ก ์ด๋ํด์ผ ํ์ต๋๋ค. ์์ง์ ์ฐ๋ฆฌ ์๋น์ค์ ์ ์ ๊ฐ ์์ด์ ๋ฌธ์ ๊ฐ ์์ง๋ง, ํ๋ ์ ์ ๊ฐ ์๋ ์ํ์์ ์๋น์คํ๋ ค๋ฉด ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ก๊ทธ์ธ์ ํ ์คํธํ ๋ ๋ง๋ค ์๋ฒ์ ์ค์ ์ ๋ฐ๊ฟ์ค์ผ ํ๋ค๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
์ด ์ด์๋ฅผ ์ฒ์ ๋ง๋ฌ์ ๋ ๊ฐ์ฅ ๋จผ์ ๋ ์ค๋ฅธ ํด๊ฒฐ์ฑ ์ ๊ฐ๋ฐ์๋ฒ์ ๋ฐฐํฌ์ฉ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด์์ต๋๋ค. ๋์ค์๋ ์ด ๋ ๊ฐ์ง ์๋ฒ๋ฅผ ๊ผญ ๋ถ๋ฆฌํ ๊ฑฐ์ง๋ง, ํ์ฌ๋ ๋น ๋ฅด๊ฒ ๊ตฌํ ์ง๋๋ฅผ ๋๊ฐ๊ณ ์๋ ์ํฉ์ด๋ผ์ ๊ฐ๋ฐ์ฉ ์๋ฒ๋ฅผ ํ๋ ๋ ๊ตฌ์ถํ ์ฌ์ ๊ฐ ๋์ง ์์์ต๋๋ค. ๊ฒ๋ค๊ฐ ๋ฐฑ์๋๋ ์์ง Docker์ CI/CD๊ฐ ๋์ ๋๊ธฐ ์ ์ด๋ผ์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ํ๋ ๋ ๋๋ ๊ฒ์ ๋ฌด๋ฆฌ๊ฐ ์์์ต๋๋ค. ํ ๋์ ์๋ฒ๋ก ๋ฆฌ๋ค์ด๋์ url ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฉํ ๋๊ป ์กฐ์ธ๋ ๊ตฌํด๋ณด๊ณ ๋ง์ ์๋ฃ๋ ์ฐพ์๋ดค์ต๋๋ค.
๊ฒฐ๊ตญ ๊ฐ๋ฐ์ฉ ์๋ฒ๋ฅผ ํ๋ ๋ ๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ ํํ๊ฒ ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ฒ๋ฅผ ํ๋๋ง ์ฌ์ฉํ๊ธฐ ์ํด ๊ณ ๋ฏผํ๋ ์๊ฐ
+ ๋์ค์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋ ์๊ฐ
๊น์ง ๋๋ฐฐ๋ก ์๊ฐ์ด ๋ญ๋น๋๋ค.๋ฐ๋ผ์ ๊ณฐํฐ๋ทฐ ์๋น์ค๋ ์๋ฒ๋ฅผ ํ๋ ๋ ํ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ด ์ด์๊ฐ ์๋ง ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๋์ ์ ๋ฉ์ธ ์ด๋ฒคํธ!! ์ ๋๋ค๐ ์์์ ๋ณด์ ์ด๋ฏธ์ง์ฒ๋ผ ๊ณฐํฐ๋ทฐ ์๋น์ค๋ ๊ตฌ๊ธ ๋ก๊ทธ์ธ ์ฑ๊ณต์ set-cookie ํค๋๋ฅผ ํตํด accessToken์๋ต์ ๋ฐ๊ณ ์์์ต๋๋ค. accessToken์ ๊ฐ์ ์ฟ ํค๋ก ๊ด๋ฆฌํ๊ธฐ๋ก ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ ๊ฒ ์ฟ ํค์ ์ฅ์ ๋ง ๋ณด๊ณ ์ฟ ํค๋ฅผ ๋์ ํ๋๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ์์ฃผ ๊ณจ์นซ๋ฉ์ด๋ฆฌ๊ฐ ๋์ด๋ฒ๋ ธ์ต๋๋ค. ์ง๊ธ๋ถํฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ ํฐ์ ์ฟ ํค๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ผ๋ง๋ ํ๋ ์ง ํจ๊ป ์์๋ด ์๋ค.
์์์ ์ธ๊ธํ ๊ฒ ์ฒ๋ผ ์ฟ ํค์ SameSite ์ต์ ์ ์ค์ ํด์ CSRF(ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์์กฐ)๊ณต๊ฒฉ์ ๋ฐฉ์ดํ ์ ์๋๋ฐ์. ํ์ฌ SameSite ์ ์ฑ ์ ์๋ ์ธ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
์ด ์ ์ฑ
์ด ์ค์ ๋ ์ฟ ํค๋ ์ค์ง ๋์ผํ ์ฌ์ดํธ๋ก์ ์์ฒญ์๋ง ์ ์ก๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๋์ผ ์ฌ์ดํธ๋ ํ๋กํ ์ฝ, ํฌํธ(๋ช
์๋ ๊ฒฝ์ฐ), ํธ์คํธ๊ฐ ๊ฐ์ ๋ ์ฃผ์๋ฅผ ๋งํฉ๋๋ค.
์๋ฅผ๋ค์ด api.gomterview.com
๊ณผ www.gomterview.com
์ ๋์ผํ ํธ์คํธ ๋ค์์ ๊ฐ์ก์ผ๋ ๋์ผํ ์ฌ์ดํธ์ฃ . ํ์ง๋ง api.gomterview.com
๊ณผ localhost:3000
์ ํธ์คํธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฌ์ดํธ๋ก ์ทจ๊ธ๋ฉ๋๋ค.
ํ ๋ ๋ฒจ ํ์์ ๋ํ ์์ฒญ์๋ง ์ฟ ํค๊ฐ ์ ์ก๋ฉ๋๋ค. ํ ๋ ๋ฒจ ํ์์ด๋ ๋งํฌ๋ฅผ ํตํด ์ด๋ํ๋ ๊ฒ์ ๋งํ๋๋ฐ์. ์์๋ฅผ ๋ค์ด ์ค๋ช
ํ์๋ฉด window.location.href
๋ฅผ ํตํ ๋งํฌ ์ด๋์ ์ํ GET ์์ฒญ์ด ์ด์ ํด๋นํฉ๋๋ค. ๋๋ฌธ์ ์ด ์ ์ฑ
์ ๊ฐ์ง ์ฟ ํค๋ axios๋ fetch ๋ฑ์ ํตํด api ์์ฒญ์ ํ ๋๋ ์ฟ ํค๊ฐ ์ ์ก๋์ง ์์ต๋๋ค.
๋ชจ๋ ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ์ ๋ํด ์ ์ก๋ฉ๋๋ค. ๋จ, SameSite=None ์ ์ฑ ์ฟ ํค๋ ๋ฐ๋์ Secure ํ๋๊ทธ์ ํจ๊ป ์ฌ์ฉ๋์ด์ผ ํ๋๋ฐ์. Secure ํ๋์ค๋ฅผ ์ค์ ํ ์ฟ ํค๋ https๋ฅผ ํตํด์๋ง ์ ์ก๋ ์ ์์ต๋๋ค. ๋ง์ฝ ๋ก์ปฌํธ์คํธ์์ ๋ฐฐํฌ๋ ์๋ฒ์ ๋ก๊ทธ์ธ์ ํ ์คํธํ๋ ค๋ฉด ๋ก์ปฌํธ์คํธ๋ https ํ๋กํ ์ฝ์ ์ค์ ํด์ผ ํฉ๋๋ค.
์ฌ์ค ๋ฐฐํฌ๋ ๊ณฐํฐ๋ทฐ ์๋น์ค์์๋ ์ฟ ํค์ ๋ํ ๋ฌธ์ ๋ฅผ ์ ํ ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ํ๋ฉด ๋๋ค gomterview.com
์ด๋ผ๋ ๋๋ฉ์ธ์์ DNS ๋ ์ฝ๋๋ง ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์์ ๋์ผํ ์ถ์ฒ๋ก ์ทจ๊ธ๋๊ธฐ ๋๋ฌธ์ด์ฃ .
ํ์ง๋ง ์ฟ ํค์ ๋ํ ๋ฌธ์ ๋ ์ธ์ ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ํ ์ด์ผ๊ธฐ์
๋๋ค! ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ์ด๋จ๊น์? ๋ฐฐํฌ ์๋ฒ๋ gomterview.com
๋๋ฉ์ธ์ ์ฌ์ฉํ์ง๋ง, ์น์ฌ์ดํธ๋ localhost
ํธ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ์ด ๋์ ๋์ผ ์ถ์ฒ๊ฐ ์๋์ฃ . ๋๋ฌธ์ ์ด์ ๋ํ ๋์์ ํด์ค์ผํฉ๋๋ค.
๋คํํ ํ์ฌ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ api ์์ฒญ์ด ์๋๋ผ ๋งํฌ ์ด๋์ ํตํ ์์ ํ์์ผ๋ก ์งํํ๊ธฐ ๋๋ฌธ์ SameSite์ ๊ธฐ๋ณธ๊ฐ์ธ lax๋ก ์ค์ ํด๋ ๋ฐฑ์๋์ ์ฟ ํค๊ฐ ํด๋ผ์ด์ธํธ์ ์ ์ค์ ๋์์ต๋๋ค.
๊ทธ๋์ ๊ณฐํฐ๋ทฐ๋ SameSite=Lax์ ์ฟ ํค ์ ์ฑ
์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ฆฌ๋ค์ด๋์
๋ ์ ์ํ๋๊ณ , ์ฟ ํค๋ ์ ์ค์ ๋๊ณ ๋ชจ๋ ๊ฒ ์์กฐ๋กญ๊ฒ ์งํ๋ ์ค ์์์ต๋๋ค.
ํ์ง๋ง ๊ฐ์ฅ ํฐ ์ด์๊ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์์๋๋ฐ์. ๋ฐ๋ก localhost
๋ก ๋ถํฐ ๋ฐ์ํ api ์์ฒญ์ ์ฟ ํค๊ฐ ์๋์ผ๋ก ํฌํจ๋์ง ์๋๋ค๋ ๊ฒ์ด์์ต๋๋ค.
์๋ํ๋ฉด ์ฟ ํค์ domain ์ค์ ์ด .gomterview.com
์ผ๋ก ๋์ด์์๊ธฐ ๋๋ฌธ์ด์ฃ .
๋ธ๋ผ์ฐ์ ์์๋ ๋ชจ๋ ์์ฒญ์ ์ฟ ํค๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์๋๋ผ ์ฟ ํค์ ๋๋ฉ์ธ ๊ฐ๊ณผ ํ์ฌ api ์์ฒญ์ ๋ณด๋ด๋ ์ฃผ์๊ฐ ์ผ์นํ ๋๋ง ์์ฒญ์ ์ฟ ํค๋ฅผ ํฌํจ์ํต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณฐํฐ๋ทฐ ์๋น์ค์ ์ฟ ํค๋ SameSite=Lax๋ผ์ ํฌ๋ก์ค ๋๋ฉ์ธ๊ฐ ์์ ํ์์ด ์๋ ์์ฒญ์ ํฌํจ์ํฌ ์ ์์ต๋๋ค.
์ฟ ํค์ ๋๋ฉ์ธ ์ค์ ์ด localhost๋ผ๋ฉด localhost -> localhost
๋ก์ ์์ฒญ์๋ ์ฟ ํค๊ฐ ์๋์ผ๋ก ํฌํจ๋ฉ๋๋ค. ๊ทธ๋์ Webpack dev server์ proxy๋ฅผ ์ฌ์ฉํด์ ์์ฒญ์ localhost๋ก ๋ฐ๊พธ๋ฉด ์ฟ ํค๊ฐ ์ ์ค์ ๋ ๊ฒ์ด๋ผ๋ ๊ฐ์ค์ ์ธ์ฐ๊ณ ์คํ์ ํด๋ดค์ต๋๋ค.
[!tip] ์ฌ๊ธฐ์ ์ง๊ณ ๋์ด๊ฐ ์ ! localhost ์นํฉ ํ๋ก์๋ถํฐ ์๋ฒ๊น์ง๋ ํฌ๋ก์ค ๋๋ฉ์ธ์ธ๋ฐ ์ด๋ป๊ฒ ์ฟ ํค๊ฐ ์ ์ก๋ ์ ์์๊น์? ๋ฐ๋ก ์ฟ ํค์ CORS ์ ์ฑ ์ ๋ธ๋ผ์ฐ์ ์์ ์ ํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํด๋ผ์ด์ธํธ ์ฌ์ดํธ๋ถํฐ ์นํฉ ํ๋ก์๊น์ง ๊ฐ๋ ์์ฒญ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฑ ์ ๋ฐ๋ผ์ผํ์ง๋ง, ์นํฉ ํ๋ก์๋ถํฐ ์ค์ ์๋ฒ๊น์ง์ ์์ฒญ์ ์๋ฒ์ ์๋ฒ๊ฐ์ ์์ฒญ์ด๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์ ์ ์ฑ ์ ๋ฐ๋ฅด์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๋ก์ค ๋๋ฉ์ธ๊ฐ์๋ ์ฟ ํค๊ฐ ์ ์ก๋ฉ๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์๋ ๋ฌธ์ ๊ฐ ์์๋๋ฐ์. ์ฟ ํค์ ๋๋ฉ์ธ์ด localhost๊ฐ ๋๋ฉด ์๋ฒ์์ set-cookie ํค๋๋ฅผ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค๊ฐ ์ค์ ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๋์ผ ์ถ์ฒ ์ ์ฑ (Same-Origin Policy)์ผ๋ก ์ธํด ๋ค๋ฅธ ์ถ์ฒ์ ์ฟ ํค๋ฅผ ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ๋ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
์นํฉ dev server์ ํ๋ก์๋ http-proxy-middleware๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฏธ๋ค์จ์ด์์๋ cookieDomainRewrite๋ผ๋ ์ฟ ํค์ ๋๋ฉ์ธ์ ๋ณ๊ฒฝํ ์ ์๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์ด ์ต์ ๋ ์ฌ์ฉํ ์ ์์์ต๋๋ค. ์๋ํ๋ฉด ์๋ฒ์์ set-cookie ์๋ต์ ๋ด๋ ค์ฃผ๋ ๊ฒ์ ํด๋ผ์ด์ธํธ์ api ์์ฒญ์ ๋ํ ๊ฒ์ด ์๋๋ผ ๋งํฌ ์ด๋์ ํตํ ์์ํ์์ ๋ํ ์๋ต์ด๋ฏ๋ก ํ๋ก์๋ฅผ ํตํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
nginx๋ก ๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์ค์ ํด์ ์ฟ ํค ๋๋ฉ์ธ gomterview -> localhost๋ก ๋ณ๊ฒฝํด์ค ํ ์นํฉ ํ๋ก์๋ก ์๋ต์ ๋ด๋ ค์ค๋ค๋ฉด ์ฟ ํค๊ฐ ์ค์ ๋๋ ๊ฒ๋ ๋ฌธ์ ์๊ณ , ์ฟ ํค๊ฐ api ์์ฒญ์ ํฌํจ๋ผ์ ๋ณด๋ด์ง๋ ๊ฒ์๋ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ ๋ํ ํตํ์ง ์์์ต๋๋ค. ์๋ํ๋ฉด ๋ก๊ทธ์ธ ์๋ต์ด ๋ฆฌ๋ค์ด๋์ ์๋ต์ด๋ผ์ ์นํฉ ํ๋ก์๋ฅผ ํตํด ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.๐ญ๐ญ nginx ํ๋ก์์์ ์ฟ ํค ๋๋ฉ์ธ์ ๋ณ๊ฒฝํด์ฃผ๋๋ผ๋ ๋ฆฌ๋ค์ด๋์ ์๋ต์ ํตํด ์ค์ ๋๋ ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํ๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ ์ฑ ์ ํผํ ์ ์์์ต๋๋ค.
์ ํ๋ก์ฐ๋ก ํด๋ผ์ด์ธํธ์์ ์ธ๊ฐ ์ฝ๋๋ฅผ ๋ฐ์์จ ํ ๋ฐฑ์๋์ ์ ๋ฌํ๋ ๋ฐฉ์์ ๋ํด ๊ณ ๋ คํด๋ดค์ต๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํจ์ผ๋ก์จ ์ป์ ์ ์๋ ์ฅ์ ์ ์ง๊ธ๊น์ง ๊ฒช์๋ ๋ฌธ์ ๋ค์ ๋ฐ๋ก ํด๊ฒฐํ ์ ์์ง๋ง ๋จ์ ์ด ๋๋ฌด ์น๋ช ์ ์ด๋ผ์ ์ฑํํ ์ ์์์ต๋๋ค.
์ฌ์ค ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๊ธด ํฉ๋๋ค. ๋ฐฐํฌ๋ ์๋ฒ๋ ์ด๋ฏธ https๊ฐ ์ค์ ๋์ด ์์๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ ํ๊ฒฝ์๋ง https๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋ชจ๋ ๊ฒ ํด๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ 3๋ช ์ ์ปดํจํฐ์ ๋ชจ๋ https ์ค์ ์ ํด์ผ ํ๋ค๋ ๊ฒ์ด ๋งค์ฐ ๋ฒ๊ฑฐ๋ก์ด ์์ ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ก์ปฌ ํ๊ฒฝ์ https ์ค์ ์ ๋ํ ๊ฐ์ด๋๋ฅผ ์์ฑํด์ ๊ณต์ ํ ํ ํ์๋ค์ด ์ง์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ๊ฑฐ๋, ํ์๋ค๊ณผ ๋ง๋๋ ๋ ์ด ๋ด์ฉ์ ๋ํด ์๋ดํด์ค์ผ ํ๋๋ฐ ์ค์๋๊ฐ ํฌ์ง ์์ ๋ก๊ทธ์ธ ์์ ์ ๋ชจ๋๊ฐ ์๋์ง๋ฅผ ํฌ์ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ค๋ฅธ ํ์๋ถ๋ค์ด ์ต๋ํ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ํด๊ฒฐ์ฑ ์ ์ฐพ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ์ด ํด๊ฒฐ์ฑ ๋ ๊ธฐ๊ฐํ์ต๋๋ค.
์์์ ๊ณ ๋ฏผํ๋ ๊ฑฐ์ฐฝํ ํด๊ฒฐ์ฑ ๋ค์ ๋นํด ์์ฃผ ๊ฐ๋จํ ํธ๋ฆญ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ์. ๋ฐ๋ก ๊ฐ๋ฐ์ฉ token ๋ฐ๊ธ api๋ฅผ ํ๋ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ๋๋ฉ ํ๋ฉด์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋์์ env์ ๋ฐ๋ผ์ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ๊ตฌ์ฑํด์ ๊ฐ๋ฐ ๋ชจ๋์ผ๋๋ ์๋์ ๊ฐ์ ํ๋ฆ์ผ๋ก ์ฟ ํค๊ฐ ์ค์ ๋๊ฒ ํ์ต๋๋ค. ๊ฐ๋ฐ ๋ชจ๋์ผ ๋ ํ ํฐ ๋ฐ๊ธ ์์ฒญ์ ์๋ฒ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ Authorization Header๋ฅผ ํตํด accessToken์ ๋ฐ๊ธํด์ค๋๋ค. Authorization Header๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ด์ ์ฟ ํค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํฌ๋ก์ค ๋๋ฉ์ธ์ ๋ํ ๊ณ ๋ ค๋ฅผ ํ์ง ์์๋ ๋ฉ๋๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ์์ ๋งค ์์ฒญ๋ง๋ค ์ฟ ํค๋ฅผ ์ง์ ํค๋์ ๋ฃ์ด์ผ ํ๋ค๋ ๋ถํธํจ์ด ์์์ฃ . ๊ทธ๋์ ํด๋ผ์ด์ธํธ์์์ accessToken์ localhost ๋๋ฉ์ธ์ ์ฟ ํค๋ก ์ง์ ์ค์ ํด์ฃผ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ฐ์ด ๋งค ์์ฒญ์ ์๋์ผ๋ก ํฌํจ๋๋๋ก ์นํฉ ํ๋ก์๋ฅผ ์ค์ ํ์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ธฐ์กด์ api ์์ฒญ ํจ์๋ฅผ ์์ ํ์ง ์๊ณ , ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๋ณด๋ด๋ ๋ฒํผ์๋ง ๋ก์ง์ ์ถ๊ฐํด์ ๊ฐ๋ฐํ๊ฒฝ์ ๋ก๊ทธ์ธ์ ๊ตฌํํ ์ ์์์ต๋๋ค.
์ง๊ธ๊น์ง Oauth2 ๋ก๊ทธ์ธ์ ๊ตฌํํด๋ณธ ๊ฒฝํ์ด ์์๊ณ , ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๋ ํผ๋ฐ์ค๋ ๋ง๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์ธ ๊ตฌํ์ ๋ํ Jira ํฐ์ผ์ 3์๊ฐ์ผ๋ก ์์ํ์์ต๋๋ค. ์ง๊ธ ๋ณด๋ ์ ๋ง ํ์์์ด ๋์ค๋ค์๐๐ ์๊ฐํด๋ณด๋ฉด ์ง๊ธ๊น์ง ์ ๊ฐ ๊ตฌํํ๋ ๋ก๊ทธ์ธ์ ๋ชจ๋ Authorization ํค๋๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ๋๋ฌธ์ ์ด๋ ๊ฒ ์ฟ ํค์ ๋ธ๋ผ์ฐ์ ์ ์ฑ ์ ๋ํด์ ๊น๊ฒ ๊ณ ๋ฏผํ ํ์๊ฐ ์์์ฃ . ๊ทธ๋์ ์ด๋ฒ ํ๋ก์ ํธ์์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ฉด์ ๋๋ ๋ง์ ๋น ์ง๊ธฐ๋ ํ์ต๋๋ค. '์ด๋ฏธ ์๊ณ ์๋ ์ฝ๊ณ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ๊น? ์๋์ผ ๊ทธ๋๋ ์ด๋งํผ ๊ณ ๋ฏผํ๋๋ฐ ํฌ๊ธฐํ ์๋ ์์ง' ์ด ๋ ๊ฐ์ง ์๊ฐ์ด ๊ณ์ ๋จธ๋ฆฟ์์์ ๋ ๋์ง ์์์ต๋๋ค. ์ฌ์ค ์ด ์์ ๋ณด๋ค ์ค์ํ ์์ ์ ๋ง๊ณ , ์ฟ ํค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Docker, nginx, reverse proxy ๋ฑ์ ๋ํด ํ์ตํ๊ณ ์ ์ฉํด๋ณด๋ ๊ฒ์ด ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์จ ์์์ผ ํ ์ญ๋์์๋ ์ข ๋ฒ์ด๋ฌ๋ค๋ ์๊ฐ๋ ๋ค์์ต๋๋ค. ~~๊ทธ์น๋ง ํฌ๊ธฐํ๊ธฐ์ ๋๋ฌด ๋ง์ ๊ธธ์ ์๋ฒ๋ ธ๋ค...!~~ ๊ทธ๋์ ํ๋ฃจ์ 2์๊ฐ ์ด์ ๊ณ ๋ฏผํ์ง ๋ง์๋ ๋๋ง์ ๊ท์น์ ์ธ์ฐ๊ณ ๋ค๋ฅธ ์์ ๊ณผ ๋ณํํ๋ฉด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ๊ฑฐ์ฐฝํ๊ฒ ๊ณ ๋ฏผํ ๊ฒ์ ๋นํด ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ฒ ๋ผ์ ์ฝ๊ฐ ํ๋ฌดํ ๊ฐ๋ ์์ง๋ง, ํด๊ฒฐ์ฑ ์ ์ฐพ๋ ๊ณผ์ ๋์ ์ ๋ง ๋จธ๋ฆฌ๋ฅผ ์ธ๋งค๋ฉฐ ๋ชฐ๋ํ๊ฒ ๋ผ์ ์ฌ๋ฐ๊ธฐ๋ ํ์ต๋๋ค. ์ด์ ๋๊ฐ ์ ๊ฒ ์ฟ ํค์ ๋ํด ๋ฌป๋๋ค๋ฉด ์์ฃผ ๋น๋นํ๊ฒ ์ค๋ช ํด์ค ์์ ๊ฐ์ด ์๊ฒผ์ต๋๋ค!!
[!info] ์ 2์ฃผ๊ฐ์ ๊ณ ๋ฏผ์ผ๋ก๋ ํ์ฌ ๋ฐฉ๋ฒ์ด ์ต์ ์ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค! ํ์ง๋ง ์ด๋ณด๋ค ๋ ๋์ ํด๊ฒฐ์ฑ ์ด ์๊ฑฐ๋ ๊ถ๊ธํ ๋ด์ฉ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋๊ธ๋ก ํผ๋๋ฐฑ ๋ถํ๋๋ฆฝ๋๋ค๐