๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

OAuth 2.0๊ณผ OAuth 2.1์˜ ๋„์ž… ์‚ฌ๋ก€

mrmount 2024. 10. 18.

 

 

OAuth 2.0๊ณผ OAuth 2.1์˜ ๋„์ž… ์‚ฌ๋ก€

 

1. ๊ตฌ๊ธ€์˜ OAuth ํ™œ์šฉ ์‚ฌ๋ก€

๊ตฌ๊ธ€์€ OAuth๋ฅผ ํ†ตํ•ด ๊ตฌ๊ธ€ ๊ณ„์ • ๋กœ๊ทธ์ธ ๊ณผ API ์ ‘๊ทผ ๊ถŒํ•œ ๊ด€๋ฆฌ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” Gmail, ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ๋“ฑ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ํ•œ ๋ฒˆ์˜ ๋กœ๊ทธ์ธ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ํŽ˜์ด์Šค๋ถ ์†Œ์…œ ๋กœ๊ทธ์ธ

ํŽ˜์ด์Šค๋ถ์€ OAuth 2.0์„ ์‚ฌ์šฉํ•ด ํƒ€์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ณ„๋„์˜ ๊ณ„์ • ์ƒ์„ฑ ์—†์ด ํŽ˜์ด์Šค๋ถ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ”ผํŠธ๋‹ˆ์Šค ์•ฑ์˜ OAuth ์‚ฌ์šฉ

ํ”ผํŠธ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ OAuth๋ฅผ ํ†ตํ•ด ์• ํ”Œ ํ—ฌ์Šค ์™€ ๊ฐ™์€ ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ ํ”Œ๋žซํผ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ํ—ˆ์šฉํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณต์œ ๋˜๋„๋ก ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

OAuth ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ๊ณผ ๋ณด์•ˆ ํŒ

  1. Access Token ๋ณด์•ˆ
    - Access Token์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด์ด๋ฏ€๋กœ HTTPS๋ฅผ ์‚ฌ์šฉ ํ•ด ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    - ํ† ํฐ ํƒˆ์ทจ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์„ ์งง๊ฒŒ ์„ค์ •ํ•˜๊ณ  Refresh Token ์„ ํ™œ์šฉํ•˜์„ธ์š”.
  2. PKCE ๋„์ž… ๊ถŒ์žฅ
    - PKCE๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ ๊ณต๊ฐœ ํด๋ผ์ด์–ธํŠธ์˜ ๋ณด์•ˆ ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
    - OAuth 2.1์—์„œ๋Š” PKCE ์‚ฌ์šฉ์ด ํ•„์ˆ˜ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  3. ๊ถŒํ•œ ์ตœ์†Œํ™” ์›์น™ ์ ์šฉ
    - OAuth๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜๋Š” ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ ์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
    - ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋Œ€์‹  ํ•„์š”ํ•œ ๋ฒ”์œ„๋งŒ ์š”์ฒญํ•˜์„ธ์š”.
  4. OAuth ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง
    - OAuth ์ ‘๊ทผ ๋กœ๊ทธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด ์ด์ƒ ์ ‘๊ทผ ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    - ๋น„์ •์ƒ์ ์ธ ํ™œ๋™์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์ฆ‰์‹œ ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•˜๊ณ  ํ† ํฐ์„ ๋งŒ๋ฃŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 


 

OAuth์˜ ๋ฏธ๋ž˜: OAuth 2.1๊ณผ Beyond

OAuth 2.1 ์€ ์•ž์œผ๋กœ๋„ ๋ณด์•ˆ์„ฑ๊ณผ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ๊ฐ•ํ™”ํ•  ์˜ˆ์ •์ด๋ฉฐ, Zero Trust Architecture ์™€ ๊ฐ™์€ ์ตœ์‹  ๋ณด์•ˆ ๋ชจ๋ธ๊ณผ ํ†ตํ•ฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ธฐ์—…๋“ค์€ OAuth๋ฅผ ํ™œ์šฉํ•ด API ๊ฒฝ์ œ ์™€ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ชจ๋ธ ์„ ํ™•์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋””์ง€ํ„ธ ์•„์ด๋ดํ‹ฐํ‹ฐ ๊ตฌ์ถ•์—๋„ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 


 

๊ฒฐ๋ก : OAuth๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ์ธ์ฆ๊ณผ ์ธ๊ฐ€

OAuth๋Š” ๋ณด์•ˆ์„ฑ๊ณผ ํŽธ์˜์„ฑ ์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ธ์ฆ/์ธ๊ฐ€ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. OAuth 1.0์—์„œ 2.0, ๊ทธ๋ฆฌ๊ณ  2.1 ๋กœ์˜ ๋ฐœ์ „ ๊ณผ์ •์€ ๋ณด์•ˆ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋ชจ๋‘ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. OAuth๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Access Token ๊ด€๋ฆฌ์™€ PKCE ์‚ฌ์šฉ ๋“ฑ ์ตœ์‹  ๋ณด์•ˆ ํŠธ๋ Œ๋“œ๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 


 

FAQ

Q1. OAuth 2.1์—์„œ PKCE๊ฐ€ ํ•„์ˆ˜์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
A1. PKCE๋Š” ๊ณต๊ฐœ ํด๋ผ์ด์–ธํŠธ(๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ) ์—์„œ ํ† ํฐ ํƒˆ์ทจ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Q2. OAuth๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š๋‚˜์š”?
A2. OAuth๋Š” ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์•ก์„ธ์Šค ํ† ํฐ ์„ ํ†ตํ•ด ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

Q3. OAuth์™€ OpenID Connect์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
A3. OAuth๋Š” ์ธ๊ฐ€(Authorization) ๋ฅผ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, OpenID Connect๋Š” ์ธ์ฆ(Authentication) ์„ ์œ„ํ•œ ํ™•์žฅ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

Q4. Access Token๊ณผ Refresh Token์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
A4. Access Token ์€ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งŒ๋ฃŒ๋œ ํ›„ Refresh Token ์„ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด Access Token์„ ๋ฐœ๊ธ‰๋ฐ›์Šต๋‹ˆ๋‹ค.

Q5. OAuth๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•œ๊ฐ€์š”?
A5. OAuth๋Š” API ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณผ ์†Œ์…œ ๋กœ๊ทธ์ธ ์— ์ ํ•ฉํ•˜์ง€๋งŒ, ๋‹จ์ˆœ ์ธ์ฆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” OpenID Connect๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 


๋Œ“๊ธ€