๐Ÿ”™๋’ค๋กœ๊ฐ€๊ธฐ

OAuth2์˜ ์ฃผ์š” ์—ญํ• ์ž

OAuth2์—์„œ๋Š” ํฌ๊ฒŒ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ์—ญํ• ์ž๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ(Client): ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์ด์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฉฐ, ์‚ฌ์šฉ์ž ๋Œ€์‹  ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์„ ์š”์ฒญํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, google ๊ณ„์ •์œผ๋กœ figma๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด figma๊ฐ€ ํด๋ผ์ด์–ธํŠธ์ด๋‹ค.
  2. ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž(Resource Owner): ๋ณดํ†ต์€ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋‹ค. ์•ž์„  ์˜ˆ์‹œ์—์„œ google์ด ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž์ด๋‹ค.
  3. ์ธ์ฆ ์„œ๋ฒ„(Authorization Server): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ์ž ๋Œ€์‹  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด, ์ธ์ฆ ์„œ๋ฒ„์—์„œ ๋ฐœ๊ธ‰ํ•˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ์ด ํ•„์š”ํ•˜๋‹ค. ์ธ์ฆ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ด๋ฅผ ์ฆ๋ช…ํ•˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ์„ ์ œ๊ณตํ•œ๋‹ค.
  4. ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„(Resource Server): ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ œ๊ณตํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

OAuth2์˜ ํ๋ฆ„

OAuth2์˜ ๊ธฐ๋ณธ์ ์ธ ํ”Œ๋กœ์šฐ๋Š” ๋‹ค์Œ์˜ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์Šน์ธ ๋ฐ›๋Š”๋‹ค.
  2. ์‚ฌ์šฉ์ž๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์Šน์ธ์„ ๋ถ€์—ฌํ•œ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์Šน์ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ธ์ฆ ์„œ๋ฒ„์—๊ฒŒ ์•ก์„ธ์Šค ํ† ํฐ์„ ์š”์ฒญํ•œ๋‹ค.
  4. ์ธ์ฆ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
  5. ํด๋ผ์ด์–ธํŠธ๋Š” ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์— ์ œ๊ณตํ•˜๋ฉด์„œ ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ํ•œ๋‹ค.
  6. ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๊ณ , ํ† ํฐ์ด ์œ ํšจํ•˜๋‹ค๋ฉด ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

์ด๋Ÿฐ ํ๋ฆ„์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ ๋„, ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.