OAuth๋ ์ธํฐ๋ท ์ฌ์ฉ์๊ฐ ์์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ 3์์๊ฒ ๋
ธ์ถํ์ง ์๊ณ ํน์ ์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ฅ๋ ๊ฐ์ธ ์ ๋ณด์ ๋ํ ์ ๊ทผ ๊ถํ์ ์์ ํ๊ฒ ๋ถ์ฌํ๊ธฐ ์ํด ์ค๊ณ๋ ์ธ๊ฐ(Authorization) ํ๋ ์์ํฌ์ด๋ค.
๋ง์น ํธํ
์์ฝ ์ ๋ฐ๋ ์นด๋ ํค์ ๊ฐ์ด ์นด๋ ํค ์์ฒด๊ฐ ์ด์ฉ์์ ์ ๋ถ์ฆ(ID/PW)์ ์๋์ง๋ง ํน์ ๋ฐฉ(๋ฆฌ์์ค)์ ๋ค์ด๊ฐ ์ ์๋ ๊ถํ์ ์ฆ๋ช
ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
OAuth๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ๊ธ์ฑ์ฅ๊ณผ ๋ณด์ ์๊ตฌ์ฌํญ์ ๋ณํ์ ๋ง์ถฐ 1.0์์ 2.0์ผ๋ก ์งํํ์๋ค. ๋ ๋ฒ์ ์ ๊ตฌ์กฐ์ ์ฐจ์ด๊ฐ ํฌ๋ฉฐ ์ํธ ํธํ๋์ง ์๋๋ค.
OAuth 1.0 (์ด๊ธฐ ํ์ค)
2007๋
ํธ์ํฐ์ ๊ตฌ๊ธ ๋ฑ์ด ์ฃผ๋ํ์ฌ ๋
ผ์๋ฅผ ์์ํ๊ณ 2010๋
RFC 5849๋ก ํ์คํ๋์๋ค.
OAuth 2.0 (ํ๋ ํ์ค)
1.0์ ๋ณต์ก์ฑ๊ณผ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 2012๋
RFC 6749๋ฅผ ํตํด ๋ฐํ๋์๋ค. ํ์ฌ๊น์ง๋ ์ ์ธ๊ณ์ ์ธ ์
๊ณ ํ์ค์ผ๋ก ์๋ฆฌ ์ก๊ณ ์๋ค.
OAuth 2.0 ํ๋ ์์ํฌ๋ ์์คํ
์ ๊ตฌ์ฑ ์์๋ฅผ ๋ค์์ ๋ค ๊ฐ์ง ์ญํ ๋ก ์ ์ํ๋ค.
Resource Owner (๋ฆฌ์์ค ์์ ์): ์์ ์ ์ ๋ณด์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ์ฌ์ฉ์
Client (ํด๋ผ์ด์ธํธ): ์ฌ์ฉ์์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ค๋ ์ 3์ ์ ํ๋ฆฌ์ผ์ด์
Resource Server (๋ฆฌ์์ค ์๋ฒ): ์ฌ์ฉ์์ ๋ณดํธ๋ ๋ฐ์ดํฐ๋ฅผ ํธ์คํ
ํ๋ ์๋ฒ (Google Drive, Kakao Profile)
Authorization Server (์ธ๊ฐ ์๋ฒ): ์ฌ์ฉ์์ ๋์๋ฅผ ํ์ธํ๊ณ ํด๋ผ์ด์ธํธ์ Access Token์ ๋ฐ๊ธํ๋ ์๋ฒ
OAuth 2.0์ ์ธ๊ฐ๋ฅผ ์ํ ํ๋ ์์ํฌ๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ์ธ์ฆ ๊ธฐ๋ฅ์ ํ์ค์ ํฌํจ๋์ด ์์ง ์์๋ค. ์ด๋ฐ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด 2014๋
OAuth 2.0 ํ๋กํ ์ฝ ๊ณ์ธต ์์ ๊ตฌ์ถ๋ ์ ์ ํ์ธ ํ์ค์ด OIDC์ด๋ค.
OIDC๋ OAuth 2.0์ ํ๋ฆ์ ๊ทธ๋๋ก ๊ณ์นํ๋ฉด์๋ ์ฌ์ฉ์์ ์ ์ ์ ๋ณด๋ฅผ ๋ด์ ID Token์ ์ถ๊ฐ๋ก ๋ฐํํ๋ค๋ ์ ์ด ํต์ฌ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์์ฒญ ์ scope ๋งค๊ฐ๋ณ์์ openid๋ฅผ ํฌํจํ๋ฉด ์๋ฒ๋ Access Token๊ณผ ํจ๊ป ID Token์ ๋ฐ๊ธํ๋ค. ์ด ํ ํฐ์ JWT ํ์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ ์ ์ ๋ณด๋ฅผ ๊ตฌ์กฐํํ๋ค.
ํด๋ผ์ด์ธํธ๋ ๋ฐ๊ธ๋ฐ์ ID Token์ ์ง์ ํด๋
ํ์ฌ ์ฌ์ฉ์์ ๊ณ ์ ์๋ณ์(sub), ์ด๋ฆ, ์ด๋ฉ์ผ ๋ฑ์ ์ ๋ณด๋ฅผ ์ฆ๊ฐ ํ์ธํ ์ ์๋ค.
๊ธฐ์กด OAuth 2.0์์๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด Access Token์ ์ฌ์ฉํ์ฌ ์ ์ ์ ๋ณด API๋ฅผ ์ถ๊ฐ๋ก ํธ์ถํด์ผ ํ์ผ๋ OIDC๋ ํ ํฐ ์์ฒด์ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ด ํต์ ํ์๋ฅผ ์ค์ฌ์ค๋ค.
๋ํ ์๋น์ค ์ ๊ณต์๋ค์ด ๋์ผํ OIDC ๊ท๊ฒฉ์ ๋ฐ๋ฅด๋ฏ๋ก ๊ฐ๋ฐ์๋ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ๋ค์ํ ํ๋ซํผ์ ์ ์ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด ์ฌ๋ฌ ์๋น์ค์์ ํ๋์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๋ ๋จ์ผ ๋ก๊ทธ์ธ(SSO) ์์คํ
๊ตฌ์ถ์ ํ์ ๊ธฐ์ ๋ก ์๋ฆฌ ์ก์๋ค.
