BackEnd๐Ÿงต

[Web] OAuth 2

hae02y 2023. 7. 19. 21:58
๋ฐ˜์‘ํ˜•

OAuth2๋ž€?

ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Client)์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์‹ ๋ขฐํ• ๋งŒํ•œ ์จ๋“œํŒŒํ‹ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Github, Kakao, Google, Facebook ๋“ฑ)์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ์„ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ž๊ฒฉ์ฆ๋ช…์šฉ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ํ† ํฐ์„ ์ด์šฉํ•˜์—ฌ ์จ๋“œํŒŒํ‹ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋˜๋Š” ์ถ”๊ฐ€์ ์ธ ์ธ์ฆ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.  ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ ๋กœ๊ทธ์ธ์— ์ถ”๊ฐ€์ ์œผ๋กœ OAuth2๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ์ž์˜ ํฌ๋ฆฌ๋ด์…œ์„ ๋‚จ๊ธฐ๊ณ  ์‹ถ์ง€ ์•Š์„๊ฒฝ์šฐ OAuth2 ๋กœ๊ทธ์ธ ์ธ์ฆ๋ฐฉ๋ฒ•์œผ๋กœ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋ฉด๋œ๋‹ค. 

 

1. Resource Owner๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ OAuth2 ์ธ์ฆ์„ ์š”์ฒญํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ๋กœ๊ทธ์ธ์€ Resource Owner๊ฐ€ ์จ๋“œํŒŒํ‹ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜[์—ฌ๊ธฐ์„  ๊ตฌ๊ธ€]์— ๋กœ๊ทธ์ธ ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.(Client์—์„œ ์ œ๊ณตํ•˜๋Š” ๋กœ๊ทธ์ธ์ด ์•„๋‹˜)

2. Client๋Š” Resource Owner๊ฐ€ ์จ๋“œํŒŒํ‹ฐ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜[์—ฌ๊ธฐ์„  ๊ตฌ๊ธ€] ์— ๋กœ๊ทธ์ธํ• ์ˆ˜์žˆ๋„๋ก ์จ๋“œํŒŒํ‹ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ redirect ํ•ด์ค€๋‹ค.

3. Resource Owner๋Š” ๋กœ๊ทธ์ธ ์ธ์ฆ์„ ์ง„ํ–‰ํ•˜๊ณ , ์ธ์ฆ์— ์„ฑ๊ณต์„ ํ•˜๊ฒŒ ๋˜๋ฉด 4๋ฒˆ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

4. Authorization Server๊ฐ€ Resource Owner์˜ ๋กœ๊ทธ์ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Œ์„ ์ฆ๋ช…ํ•˜๋Š” Aceess Token์„ Client์—๊ฒŒ ์ „์†กํ•œ๋‹ค.

5. Access Token์„ ์ „๋‹ฌ๋ฐ›์€ Client๋Š” Resource Owner์˜ ๋Œ€๋ฆฌ์ธ ์—ญํ• ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ , Resource Server์—๊ฒŒ Resource Owner ์†Œ์œ ์˜ Resource๋ฅผ ์š”์ฒญํ•œ๋‹ค.

6. Resource Server ๋Š” Client๊ฐ€ ์ „์†กํ•œ Access Token์„ ๊ฒ€์ฆํ•ด์„œ Client๊ฐ€ Resource Owner์˜ ๋Œ€๋ฆฌ์ธ์œผ๋กœ์จ์˜ ์ž๊ฒฉ์ด ์ฆ๋ฉด๋˜๋ฉด Resource๋ฅผ Client์—๊ฒŒ ์ „์†กํ•œ๋‹ค.

 

Authorization Grant

Client ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Access Token์„ ์–ป๊ธฐ ์œ„ํ•œ Resource Owner์˜ ๊ถŒํ•œ์„ ํ‘œํ˜„ํ•˜๋Š” ํฌ๋ฆฌ๋ด์…œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, Client๊ฐ€ Access Token์„ ์–ป๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋˜๊ณ , ๋„ค๊ฐ€์ง€ ์ข…๋ฅ˜์˜ Authorization Grant๊ฐ€ ์žˆ๋‹ค.

 

์ถ”๊ฐ€) Scope : ์ฃผ์–ด์ง„ Access Token์„ ์‚ฌ์šฉํ•˜์—ฌ ์—‘์„ธ์Šค ํ• ์ˆ˜์žˆ๋Š” Resource์˜ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

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

๊ฐ€์žฅ ๋งŽ์ด์“ฐ์ด๊ณ  ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ Refresh Token ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ถŒํ•œ๋ถ€์—ฌ ์š”์ฒญ์‹œ์— ์‘๋‹ตํƒ€์ž…์„ code๋กœ ์ง€์ •ํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค.

 

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

๋ณ„๋„์˜ code์—†์ด ๋ฐ”๋กœ Access Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

Refresh Token์˜ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ์‘๋‹ต ํƒ€์ž…์„ token์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค.

 

Resource Owner Password Credential Grant : ์ž์› ์†Œ์œ ์ž ์ž๊ฒฉ ์ฆ๋ช… ์Šน์ธ ๋ฐฉ์‹

๊ฐ„๋‹จํ•˜๊ฒŒ ๋กœ๊ทธ์ธ์‹œ ํ•„์š”ํ•œ ์ •๋ณด๋กœ Access Token์„ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ž์‹ ์˜ ์„œ๋น„์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ธ์ฆ๋ฐฉ์‹์ด๊ณ  Refresh Token ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (Authorization Server, Resource Server, Client๊ฐ€ ๊ฐ™์€ ์‹œ์Šคํ…œ์ผ๋•Œ)

๋„ค์ด๋ฒ„๊ณ„์ • -> ๋„ค์ด๋ฒ„ ์›นํˆฐ, ๋„ค์ด๋ฒ„ ๋‰ด์Šค ๋“ฑ์— ๋กœ๊ทธ์ธ ํ•˜๋Š”๊ฒฝ์šฐ

๋ฐ˜์‘ํ˜•