Skip to content

๐ŸŽˆ OAuth

์กฐํ˜„์ • edited this page Aug 11, 2024 · 1 revision

OAuth 2.0

๊ฐœ๋…

๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ํŠธ์œ„ํ„ฐ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์˜ ํŠน์ •ํ•œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ œ 3์ž ํด๋ผ์ด์–ธํŠธ(์šฐ๋ฆฌ ์„œ๋น„์Šค)๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์œ„์ž„๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

์ฆ‰, ์šฐ๋ฆฌ ์„œ๋น„์Šค ์œ ์ €์˜ ํƒ€์‚ฌ ํ”Œ๋žซํผ ์ •๋ณด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์‚ฌ ํ”Œ๋žซํผ์œผ๋กœ๋ถ€ํ„ฐ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์œ„์ž„๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

ํ•„์š”์„ฑ

  • ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ๊ธฐ๊ธฐ๋“ค์˜ ์ธ์ฆ์„ ๊ฐ„๋‹จํžˆ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ง์ ‘ ID, Password๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ํšŒ์›์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ์ด๋Ÿฐ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์™€ ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ๋ถ€๋‹ด์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค.

์—ญํ• 

Resource Owner

๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž์ด๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ •๋ณด์— ์ž๊ฒฉ์„ ์Šน์ธํ•˜๋Š” ์ฃผ์ฒด์ด๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ฆํ•˜๊ณ 
  2. ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด ๋™์˜๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ ํš๋“ ์ž๊ฒฉ์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ถ€์—ฌํ•œ๋‹ค.

๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ๋„ค์ด๋ฒ„ ๊ฐ™์€ ํ”Œ๋žซํผ์— ํ•ด๋‹นํ•œ๋‹ค.

Client

Resource Owner์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ์ ‘๊ทผ์„ ์š”์ฒญํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. Resource Server์™€ Authorization Server์˜ ์ž…์žฅ์—์„œ Client์ด๊ธฐ ๋•Œ๋ฌธ์— Client๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•ด๋‹นํ•œ๋‹ค.

Resource Server

Resource Owner์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์„œ๋ฒ„์ด๋‹ค.

Authorization Server

๊ถŒํ•œ ์„œ๋ฒ„์ด๋‹ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋ฒ„๋กœ, ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ ์ž๊ฒฉ์„ ํ™•์ธํ•˜๊ณ  access token์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

์ธ์ฆ ๋ฐฉ๋ฒ•

Authorization Code Grant(๊ถŒํ•œ ๋ถ€์—ฌ ์Šน์ธ ์ฝ”๋“œ ๋ฐฉ์‹)

image

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ์ž ๋Œ€์‹  ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์„ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. OAuth 2.0์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ํ˜•์ด๋‹ค.

access token์„ ์–ป๊ธฐ ์œ„ํ•œ ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ์žˆ์–ด ๋ณด์•ˆ์— ํšจ๊ณผ์ ์ด๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ถŒํ•œ ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„์›Œ ์ถœ๋ ฅํ•œ๋‹ค.
  2. ์ด ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ๊ถŒํ•œ ์„œ๋ฒ„๋Š” redirect_url๋กœ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
  3. ์ธ๊ฐ€ ์ฝ”๋“œ๋กœ ๊ถŒํ•œ ์„œ๋ฒ„์— access token์„ ์š”์ฒญํ•œ๋‹ค.

Implicit Grant(์•”๋ฌต์  ์Šน์ธ ๋ฐฉ์‹)

image

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

์ž๊ฒฉ ์ฆ๋ช…์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ธฐ ํž˜๋“  ํด๋ผ์ด์–ธํŠธ(JS ๋“ฑ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ตœ์ ํ™”๋œ ๋ฐฉ์‹์ด๋‹ค.

์ด์ „ ๋ฐฉ์‹์—์„œ ์ธ์ฆ ์ฝ”๋“œ(code) ๊ตํ™˜ ๊ณผ์ •์„ ๋บ€ ๋ฐฉ์‹์œผ๋กœ, ๋ฐ”๋กœ access token์„ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค. access token์ด ๋ฐ”๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ๋…ธ์ถœ ์œ„ํ—˜์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์„ ์งง๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์ „๋‹ฌ๋œ๋‹ค.

์ฐธ๊ณ 

๐ŸŽ‰ ์†Œ๊ฐœ

๐ŸŒ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ ๋ฐ ์ปจ๋ฒค์…˜

๐Ÿ“ ์˜์‚ฌ ๊ฒฐ์ •

๐Ÿง ํ•™์Šต๊ณผ ๊ตฌํ˜„

2์ฃผ์ฐจ
3์ฃผ์ฐจ
5์ฃผ์ฐจ
6์ฃผ์ฐจ
7์ฃผ์ฐจ

โ“ ๋ฆฌํŒฉํ† ๋ง, ๊ฐœ์„ 

๐Ÿšง Trouble Shooting

๐ŸŒผ ๋ฐ์ผ๋ฆฌ์Šคํฌ๋Ÿผ

Clone this wiki locally