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

OAuth์˜ ์žฅ์ ๊ณผ ํ•œ๊ณ„

mrmount 2024. 10. 18.

 

 

OAuth์˜ ์žฅ์ ๊ณผ ํ•œ๊ณ„

 

์žฅ์ 

  1. ๋ณด์•ˆ ๊ฐ•ํ™” : ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ํ† ํฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์„ ์ œ๊ณตํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„  : ์†Œ์…œ ๋กœ๊ทธ์ธ ๋“ฑ์œผ๋กœ ๋น ๋ฅธ ์ธ์ฆ๊ณผ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ถ€๋ถ„์  ๊ถŒํ•œ ๋ถ€์—ฌ : ํŠน์ • ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ œํ•œ๋œ ๊ถŒํ•œ ๋งŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ฒ”์šฉ์„ฑ : ๋‹ค์–‘ํ•œ API์™€ ์„œ๋น„์Šค์—์„œ ํ‘œ์ค€ํ™”๋œ ์ธ์ฆ ๋ฐฉ์‹ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ•œ๊ณ„

  1. ๊ตฌํ˜„ ๋ณต์žก์„ฑ : OAuth๋Š” ์ธ์ฆ ์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ, ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„ ๊ฐ„ ๋ณต์žกํ•œ ๊ตฌ์„ฑ์œผ๋กœ ์ดˆ๊ธฐ ์„ค์ •์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค .
  2. ํ† ํฐ ํƒˆ์ทจ ์œ„ํ—˜ : Access Token ์ด ํƒˆ์ทจ๋  ๊ฒฝ์šฐ ๋ณด์•ˆ ์œ„ํ˜‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. Refresh Token ๊ด€๋ฆฌ ํ•„์š” : Access Token ๋งŒ๋ฃŒ ํ›„์—๋Š” Refresh Token ์œผ๋กœ ์ƒˆ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•˜๋ฏ€๋กœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 


 

OAuth์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

 

1. ํด๋ผ์ด์–ธํŠธ(Client)

OAuth๋ฅผ ์š”์ฒญํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์˜ˆ: ํ”ผํŠธ๋‹ˆ์Šค ์•ฑ์ด ๊ตฌ๊ธ€ API์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํด๋ผ์ด์–ธํŠธ ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž(Resource Owner)

OAuth๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค(๋ฐ์ดํ„ฐ)๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ์˜ˆ: ์‚ฌ์šฉ์ž ๋ณธ์ธ์˜ ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ํŒŒ์ผ.

3. ๊ถŒํ•œ ๋ถ€์—ฌ ์„œ๋ฒ„(Authorization Server)

์ธ์ฆ๊ณผ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์˜ˆ: ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ์˜ ๋กœ๊ทธ์ธ ์„œ๋ฒ„.

4. ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„(Resource Server)

๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์˜ˆ: ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ API๊ฐ€ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 


 

OAuth์˜ ๋‹ค์–‘ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐฉ์‹

๋ฐฉ์‹ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ์‹œ
๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ ๋ฐฉ์‹ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด Access Token ๋ฐœ๊ธ‰ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—์„œ ์‚ฌ์šฉ
Implicit Grant ๋ฐฉ์‹ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ Access Token ์„ ๋ฐœ๊ธ‰ ๊ตฌํ˜• ํด๋ผ์ด์–ธํŠธ ์—์„œ ์‚ฌ์šฉ
Resource Owner ๋ฐฉ์‹ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž๊ฒฉ ์ฆ๋ช… ์„ ์ œ๊ณต ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ
Client Credentials ๋ฐฉ์‹ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ํ† ํฐ ๋ฐœ๊ธ‰ ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ์— ์‚ฌ์šฉ




 

OAuth์™€ PKCE(Proof Key for Code Exchange) ๋ณด์•ˆ ๊ฐ•ํ™”

PKCE๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ๊ณต๊ฐœ ํด๋ผ์ด์–ธํŠธ ๊ฐ€ OAuth๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ ํ•ฉ๋‹ˆ๋‹ค.

PKCE ํ๋ฆ„

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€(Code Challenge) ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ถŒํ•œ ๋ถ€์—ฌ ์š”์ฒญ์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ถŒํ•œ ๋ถ€์—ฌ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต ์‹œ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  3. ์ผ์น˜ํ•  ๊ฒฝ์šฐ Access Token์„ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

 


 

๊ฒฐ๋ก : OAuth๋Š” ํ˜„๋Œ€ ์›น ๋ณด์•ˆ์˜ ํ•ต์‹ฌ

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

 


 

FAQ

Q1. OAuth๋Š” ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋‚˜์š”?
A1. OAuth๋Š” ์ฃผ๋กœ ์ธ๊ฐ€(Authorization) ์— ์ง‘์ค‘ํ•˜๋ฉฐ, ์ธ์ฆ(Authentication)์€ OpenID Connect ์™€ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์ด ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Q2. OAuth 2.0๊ณผ OAuth 1.0์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
A2. OAuth 2.0์€ ๋” ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์™€ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ ์„ ์ œ๊ณตํ•˜๋ฉฐ, OAuth 1.0์˜ ๋ณต์žกํ•œ ์„œ๋ช… ์ ˆ์ฐจ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Q3. Refresh Token์€ ์™œ ํ•„์š”ํ•˜๋‚˜์š”?
A3. Access Token์€ ์งง์€ ์œ ํšจ ๊ธฐ๊ฐ„ ์„ ๊ฐ€์ง€๋ฉฐ, ๋งŒ๋ฃŒ๋œ ํ›„ Refresh Token ์œผ๋กœ ์ƒˆ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Q4. PKCE๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?
A4. ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณผ ๊ฐ™์€ ๊ณต๊ฐœ ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” PKCE๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Q5. OAuth๋Š” ๋ชจ๋“  API์—์„œ ์‚ฌ์šฉ๋˜๋‚˜์š”?
A5. ๋ชจ๋“  API๊ฐ€ OAuth๋ฅผ ์š”๊ตฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์— ์ ‘๊ทผํ•˜๋Š” API๋Š” ๋Œ€๋ถ€๋ถ„ OAuth๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 


๋Œ“๊ธ€