์์์ ๋ถ์ฌ๋ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ์ธ OAuth 2.0์ ๊ถํ ๋ถ์ฌ ํ๋ฆ ์ ํ์ ๋๋ค. ์ด๋ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA) ๋ฐ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ ์คํ๋๋ ํด๋ผ์ด์ธํธ ์ธก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ์ผ๋ก ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค. ๊ทธ ๋ชฉ์ ์ ์ด๋ฌํ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ณ๋์ ์์ฒญ ์์ด ๊ถํ ๋ถ์ฌ ์๋ฒ์์ ์ง์ ์ก์ธ์ค ํ ํฐ์ ์ป์ ์ ์๋๋ก ํ๊ณ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒ์ ๋๋ค.
์ฒ์์๋ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ธ์ฆ ์ฝ๋ ํ๋ฆ์ ๋ํ ๊ฐ๋จํ ๋์์ผ๋ก ๋์ ๋ ์์์ ๋ถ์ฌ์๋ ๋ช ๊ฐ์ง ๊ณ ์ ํ ๋ณด์ ์ ํ์ด ์์ต๋๋ค. PKCE(Proof Key for Code Exchange) ํ๋ฆ๊ณผ ๊ฐ์ด SPA ๋ฐ ํด๋ผ์ด์ธํธ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ํน๋ณํ ๋ง์ถฐ์ง ์๋กญ๊ณ ๋์ฑ ์์ ํ ํ๋ฆ์ ์ถํ์ผ๋ก ๋ง์ ์ ๋ฌธ๊ฐ๋ค์ ์ด์ ์ด๋ฌํ ๋ณด๋ค ์์ ํ ๋์์ ์ ํธํ์ฌ ์์์ ๋ถ์ฌ๋ฅผ ํผํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์์ ๋ถ์ฌ๋ OAuth 2.0 ์ฌ์์ ์ผ๋ถ๋ก ๋จ์ ์๊ณ ์ผ๋ถ ์๋๋ฆฌ์ค์์๋ ๊ณ์ ์ฌ์ฉ๋๋ฏ๋ก ์๋ ๋ฐฉ์์ ์ดํดํ๋ ๊ฒ์ด ์ฌ์ ํ ์ค์ํฉ๋๋ค.
์์์ ๋ถ์ฌ ํ๋ฆ์์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์๋ฅผ ๊ถํ ๋ถ์ฌ ์๋ฒ๋ก ๋ณด๋ด ์ธ์ฆํ๊ณ ์์ฒญ๋ ๊ถํ(๋ฒ์)์ ๋ํ ๋์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ถํ ๋ถ์ฌ ์๋ฒ๋ URL ์กฐ๊ฐ์ผ๋ก ์ง์ ํฌํจ๋ ์ก์ธ์ค ํ ํฐ๊ณผ ํจ๊ป ์ฌ์ฉ์๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋ก๋ ๋ฆฌ๋๋ ์ URI๋ก ๋ค์ ๋ฆฌ๋๋ ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ URL์์ ์ก์ธ์ค ํ ํฐ์ ์ถ์ถํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ด ํ๋ฆ์์๋ ์ก์ธ์ค ํ ํฐ์ด URL์ ๋ ธ์ถ๋์ง ์๋๋ก ๋ณด์ฅํ๋ฏ๋ก ์ธ์ฆ ์ฝ๋ ํ๋ฆ์ ์ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ธ ์ธ์ฆ ์ฝ๋๋ฅผ ์์ฒญํ๋ ์ค๊ฐ ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋จ์ํ๋ก ์ธํด ๋ณด์ ์ํ์ด ์ฆ๊ฐํฉ๋๋ค. ์์์ ๋ถ์ฌ ํ๋ฆ์ ์ก์ธ์ค ํ ํฐ์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก, ์ฐธ์กฐ์ ํค๋ ๋๋ ์ ์ฌ์ ์ธ ์คํฌ๋ฆฝํธ ์ฝ์ ์ ํตํ ๊ฐ๋ก์ฑ๊ธฐ์ ๋ ์ทจ์ฝํฉ๋๋ค. ๋ํ ์์์ ๋ถ์ฌ์๋ ์๋ก ๊ณ ์นจ ํ ํฐ์ ๋ํ ์ง์์ด ๋ถ์กฑํ์ฌ ํ ํฐ ๊ด๋ฆฌ์ โโ์์ ์ฑ๊ณผ ํจ์จ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
์ ์ฌ์ ์ธ ๋ณด์ ๋ฌธ์ ์ SPA์ ๋ ์ ํฉํ ํ๋ฆ์ ๊ฐ์ฉ์ฑ์ ๊ณ ๋ คํ ๋ ์์์ ๋ถ์ฌ๋ ๋ ์ด์ ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ก ๊ฐ์ฃผ๋์ง ์์ต๋๋ค. PKCE ์ง์ ์ธ์ฆ ์ฝ๋ ํ๋ฆ์ ์ด์ SPA ๋ฐ ํด๋ผ์ด์ธํธ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ถ์ฅ๋๋ ์ธ์ฆ ํ๋ฆ์ผ๋ก, ๋ณด๋ค ์์ ํ๊ณ ์ ์ฐํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
์์์ ๋ถ์ฌ๋ฅผ ํผํ๋ผ๋ ๊ถ์ฅ ์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ๋ชจ๋ OAuth 2.0 ์ค๋ฌด์์๊ฒ๋ ํด๋น ๋ฉ์ปค๋์ฆ๊ณผ ์ ์ฌ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํดํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํ ๊ฐ๋ ฅํ no-code ํ๋ซํผ์ธ AppMaster ์ ๋งฅ๋ฝ์์ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ํ ๋ณด์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. AppMaster ๋ค์ํ ์ ํ์ ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ฉํ ์ ์๋ ๋ค์ํ OAuth 2.0 ํ๋ฆ ์ต์ ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ผ๋ฐ์ ์ธ ์๊ฐ๊ณผ ๋น์ฉ์ ์ผ๋ถ๋ง์ผ๋ก ์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ๋์ต๋๋ค.
AppMaster ์ ํจ๊ป OAuth 2.0์ ์ฌ์ฉํ ๋ ๊ฐ๋ฐ์๋ ์ธ์ฆ ์ฝ๋ ํ๋ฆ, ๋ฆฌ์์ค ์์ ์ ๋น๋ฐ๋ฒํธ ์๊ฒฉ ์ฆ๋ช ํ๋ฆ, ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช ํ๋ฆ ๋ฐ ํ์ฌ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์์์ ๋ถ์ฌ๋ฅผ ํฌํจํ์ฌ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค์ํ ์ธ์ฆ ๋ถ์ฌ ์ ํ ์ค์์ ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํญ์ ์ต์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ SPA ๋ฐ ํด๋ผ์ด์ธํธ ์ธก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ PKCE ์ง์ ์ธ์ฆ ์ฝ๋ ํ๋ฆ๊ณผ ๊ฐ์ด ๊ฐ๋ฅํ ๊ฐ์ฅ ์ ์ ํ๊ณ ์์ ํ ํ๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์์์ ๋ถ์ฌ๋ ์ก์ธ์ค ํ ํฐ์ ์ป๊ธฐ ์ํ ๋ ๊ฐ๋จํ์ง๋ง ๋ ์์ ํ ์ต์ ์ ์ ๊ณตํ๋ SPA ๋ฐ ํด๋ผ์ด์ธํธ ์ธก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ์ผ๋ก ์ค๊ณ๋ OAuth 2.0 ์ธ์ฆ ํ๋ฆ์ ๋๋ค. ์ด๋ ์ญ์ฌ์ ์ค์์ฑ์ ๊ฐ๊ณ OAuth 2.0 ์ฌ์์ ์ผ๋ถ๋ก ๋จ์ ์์ง๋ง PKCE ์ง์ ์ธ์ฆ ์ฝ๋ ํ๋ฆ๊ณผ ๊ฐ์ ์ต์ ๋์์ ํจ์ฌ ๋ ๋์ ๋ณด์๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. AppMaster ์ ํ๋ ฅํ๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ฌธ๊ฐ๋ก์ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์ ์ธ์ฆ ํ๋ฆ์ ๊ตฌํํ ๋ ๊ฐ์ฅ ์์ ํ๊ณ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ์ ํํ์ฌ ์ ๊ณ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ์ง์นจ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.