๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

210308_TIL (OAuth2.0์œผ๋กœ ๊นƒํ—™๋กœ๊ทธ์ธ ๊ตฌํ˜„, ์„ธ์…˜๊ธฐ๋ฐ˜์ธ์ฆ ๋ณต์Šต)

by joooing 2021. 3. 9.
๋ฐ˜์‘ํ˜•

๐ŸŽ ์˜ค๋Š˜ ํ•œ ์ผ

์„ธ์…˜๊ธฐ๋ฐ˜์ธ์ฆ - ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ถ”๊ฐ€
MVC ํŒจํ„ด์„ ๋ณต์Šตํ•ด๋ณด๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ๊นŒ์ง€๋งŒ ๊ตฌํ˜„๋˜์–ด์žˆ๋˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ข€ ๋” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ดค๋‹ค. DB์—์„œ์˜ Create, Read, Update, Delete ๋„ค๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•ด๋ณด๊ณ ์‹ถ์–ด์„œ ํšŒ์› ๊ฐ€์ž…๊ณผ ํƒˆํ‡ด, ๊ทธ๋ฆฌ๊ณ  ํšŒ์›์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. ์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ, DB ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ๊ฐ ์ž‘์„ฑํ•  ๋•Œ๋ณด๋‹ค ํ•œ๋ฒˆ์— ์ž‘์„ฑํ•˜๋‹ˆ๊นŒ M, V, C์˜ ์—ฐ๊ด€์„ฑ์„ ์ข€ ๋” ์ž˜ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.  

OAuth 2.0
Github์„ ํ†ตํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ ์ธ์ฆ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์›๋ž˜๋Š” ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์ธ์ฆ๊ณผ ์ ‘๊ทผ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ค ํ•ด์คฌ์—ˆ๋Š”๋ฐ, ์ด ๋ฐฉ์‹์„ ์“ฐ๋ฉด ์ธ์ฆ์€ ๊นƒํ—™์ด, ๋‚ด ์„œ๋ฒ„๋Š” ์ ‘๊ทผ ๊ถŒํ•œ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๋งŒ ํ•˜๋ฉด ๋๋‹ค. ๋ฌผ๋ก  ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ค„๊ฑฐ๋‚˜ ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๊ฑฐ๋‚˜ ์ด๋Ÿฐ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์ธ์ฆ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋– ๋„˜๊ธธ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ง€๊ธˆ์€ ์ง์ ‘์ ์œผ๋กœ ๋Š๋‚„ ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋ณด์•ˆ์ƒ์˜ ์ด์ ๋„ ์žˆ๊ณ , ์œ ์ € ์ž…์žฅ์—์„œ๋„ ํšŒ์›๊ฐ€์ž… ๊ณผ์ •์ด ์ƒ๋žต๋˜๋‹ˆ ํ›จ์”ฌ ํŽธํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜๋„ ํ•ญ์ƒ ํšŒ์›๊ฐ€์ž…์ด ๊ท€์ฐฎ์•„์„œ ๊ตฌ๊ธ€์ด๋‚˜ ์นด์นด์˜คํ†ก์œผ๋กœ ๋กœ๊ทธ์ธ์„ ํ•˜๋Š”๋ฐ, ์œ ์ €์ธ ๋‚ด ์ž…์žฅ์—์„œ๋Š” ๋ฒ„ํŠผํ•˜๋‚˜๋งŒ ๋ˆ„๋ฅด๋ฉด ์•Œ์•„์„œ ๋‹ค ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋‹ˆ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํžˆ ๋Œ์•„๊ฐ€๋Š” ๊ตฌ์กฐ์ธ์ค„ ์•Œ์•˜๋‹ค. ๊ทผ๋ฐ ์ด๋ ‡๊ฒŒ ์„œ๋ฒ„๊ฐ€ ๋ถ€์ง€๋Ÿฐํ•˜๊ฒŒ ๋‹ค๋ฅธ ์„œ๋น„์Šคํ•œํ…Œ ์ธ์ฆ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ํ† ํฐ์„ ๋ฐ›์•„์˜ค๊ณ .. ์ƒ๊ฐ๋ณด๋‹ค ๋ณต์žกํ•œ ๊ณผ์ •์ด์—ˆ๋‹ค๋Š”๊ฑธ ์•Œ๊ฒŒ๋ผ์„œ ์‹ ๊ธฐํ•˜๊ธฐ๋„ํ–ˆ๋‹ค..

 

๐ŸŽ ๊ธฐ์–ตํ•  ๊ฒƒ

Authentication ≠ Authorization
์ธ์ฆ(Authentication) → ๋‹ค๋ฅธ ์„œ๋น„์Šค๊ฐ€!
์ ‘๊ทผ๊ถŒํ•œ๊ด€๋ฆฌ(Authorization) → ๋‚ด ์„œ๋ฒ„๊ฐ€!

OAuth ์šฉ์–ด
Resource Owner : ์œ ์ €
Client : ์•ฑ
Resource server : ์„œ๋ฒ„
Authorization server : Resource server๊ฐ€ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›๋Š” ์„œ๋ฒ„
Authorization grant : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šค ํ† ํฐ์„ ์–ป์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ž๊ฒฉ ์ฆ๋ช…์˜ ์œ ํ˜•
Authorization code : access token์„ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์ „์— ํ•„์š”ํ•œ code (client ID๋กœ ์ด code๋ฅผ ๋ฐ›์•„์˜จ ํ›„, client secret๊ณผ code๋ฅผ ์ด์šฉํ•ด Access token ์„ ๋ฐ›์•„์˜ด)
Access token : ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” credentials
Scope : ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ๋ฒ”์œ„

 

๐ŸŽ ๋” ๊ณต๋ถ€ํ•  ๊ฒƒ

โœ”๏ธ AWS
โœ”๏ธ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๊ตฌํ˜„
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€