Server/basic

์ƒํ™œ์ฝ”๋”ฉ OAuth ์ •๋ฆฌ

 

์ƒํ™œ์ฝ”๋”ฉ OAuth ์ •๋ฆฌ

[์ถœ์ฒ˜:https://www.youtube.com/watch?v=hm2r6LtUbk8&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=1]

 

 

OAuth ์— ๋“ฑ์žฅํ•˜๋Š” 3๊ฐœ์˜ ์ฃผ์ฒด๊ฐ€ ์žˆ๋‹ค. 

- resource owner(user)

- resource server

- client

-(์ถ”๊ฐ€)Authorization server – ์ธ์ฆ๊ณผ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ์ „๋‹ดํ•˜๋Š” ์„œ๋ฒ„

 

OAuth๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•

-       Client๊ฐ€ resource server๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” resource server์˜ ์Šน์ธ์„ ์‚ฌ์ „์— ๋ฐ›์•„ ๋†”์•ผํ•œ๋‹ค. ์ด๊ฒƒ์„ ๋“ฑ๋ก(register)๋ผ๊ณ  ํ•œ๋‹ค. ์„œ๋น„์Šค ๋งˆ๋‹ค ๋‹ค ๋‹ค๋ฅด๋‹ค. 

๊ณตํ†ต์ ์œผ๋กœ ๋ฐ›๋Š”๊ฒƒ์€

1.     Client ID  -> ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹๋ณ„ํ•˜๋Š” ์‹๋ณ„์ž์ธ ์•„์ด๋””

2.     Client Secret  -> client id ์— ๋Œ€ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ(id๊ฐ€ ๋…ธ์ถœ๋˜๋”๋ผ๊ณ  ์ ˆ๋Œ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋…ธ์ถœ๋˜๋ฉด ์•ˆ๋œ๋‹ค!!. ์—„์ฒญ๋‚œ ๋ณด์•ˆ์‚ฌ๊ณ ๊ฐ€ ๋œ๋‹ค.) 

3.     Authorized redirect URls  -> resource server ๊ฐ€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ณผ์ •์—์„œ Authorized code ๋ผ๋Š” ๊ฐ’์„ ์ „๋‹ฌ์„ ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์–ด๋””๋กœ ์ „๋‹ฌ ํ•ด ์ฃผ์„ธ์š”~ ๋ผ๊ณ  resource server ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

OAuth ์ธ์ฆ๋ฐ›๋Š” ๋ฐฉ๋ฒ•

-       Resource owner(user) ๊ฐ€ client์— ์ ‘์† ํ•˜๋Š” ๊ณผ์ •์—์„œ resource server ๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ์žˆ๋‹ค? -> ๊ทธ๋Ÿผ client๊ฐ€ resource owner์—๊ฒŒ ex)”์นด์นด์˜คํ†ก์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค€๋‹ค.

 

 

๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š”๋ฐ ์ด ๋ฒ„ํŠผ์€ ๋ณ„๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์˜†์—์™€ ๊ฐ™์€ ๋งํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋œ๋‹ค. url์—๋Š” client id์™€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ scope=B,C ๊ทธ๋ฆฌ๊ณ  redirect_url์„ ๊ฐ™์ด ๋งํฌ๋กœ ์ œ๊ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ด ๋‹ค์Œ์€ resource owner๊ฐ€ resource server๋กœ ์ด ์ฃผ์†Œ๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด resource server๊ฐ€Resource owner๊ฐ€ ํ˜„์žฌ ๋กœ๊ทธ์ธ์ด ๋˜์–ด ์žˆ๋Š”์ง€ ์•ˆ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์„œ ๋งŒ์ผ ์•ˆ๋˜์–ด         ์žˆ์œผ๋ฉด ๋กœ๊ทธ์ธ์„ ํ•˜๋ผ๋Š” ํ™”๋ฉด์„ ๋„์–ด์ค€๋‹ค. Resource owner๊ฐ€ ๋กœ๊ทธ์ธ์— ์„ฑ๊ณต ํ–ˆ๋‹ค๋ฉด resource server ๋Š” ๊ทธ๋•Œ์„œ์•ผ ์œ„์—์„œ ๋ฐ›์€ url์˜ client id ์™€ ๊ฐ™์€ client id ๊ฐ€ server์— ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ์— ๊ทธ client id์— ํ•ด๋‹นํ•˜๋Š” redirect url์„ ํ™•์ธํ•˜๊ณ  ๋„˜๊ฒจ์˜จ redirect url๊ณผ ๊ฐ™์€์ง€ ๋˜ํ•œ ํ™•์ธํ•˜๋‹ค. ๋งŒ์•ฝ ๋‹ค๋ฅด๋ฉด ์ž‘์—…์„ ๋๋‚ด ๋ฒ„๋ฆฐ๋‹ค. ์ด๋ฅผ ํ†ต๊ณผํ•˜๋ฉด resource owner์—๊ฒŒ scope์— ํ•ด๋‹นํ•˜๋Š” ๊ถŒํ•œ์„ client์—๊ฒŒ ๋ถ€์—ฌ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค. ํ—ˆ์šฉ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ—ˆ์šฉ ํ–ˆ๋‹ค๋Š” ์ •๋ณด๊ฐ€ resource server ๋กœ ์ „์†ก๋œ๋‹ค. Resource server๋Š” resource owner ์–ด๋–ค scope์„ ํ—ˆ์šฉ ํ•˜๋Š”์ง€๋ฅผ ์ €์žฅํ•œ๋‹ค(ํŒŒ์ผ ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ).  

 

์•ž์—์„œ๋Š” ์ด์ œ resource owner์— ๋Œ€ํ•œ ํ—ˆ๋ฝ์„ ํš๋“ ํ–ˆ์œผ๋‹ˆ ์ด์ œ resource server๊ฐ€ ์Šน์ธ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

-       ๋จผ์ € resource server๋Š” Access token์„ ๋ถ€์—ฌํ•˜๊ธฐ ์ „์— authorization code๋ฅผ resource owner์—๊ฒŒ ์ค€๋‹ค. ์ด๋•Œ ์ฃผ๋Š” ํ—ค๋”๊ฐ’์ด ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์‹ํ•˜์ง€๋„ ๋ชปํ•˜๊ฒŒ ์€๋ฐ€ํ•˜๊ฒŒ ํ—ค๋” ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ํ—ค๋” ์ฃผ์†Œ์— ํฌํ•จ๋œ code๋กœ client๋Š” authorization code๋ฅผ ์•Œ๊ฒŒ ๋œ๋‹ค.

๊ทธ ๋‹ค์Œ์— client๋Š” resource server์— resource owner๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์ ‘๊ทผํ•œ๋‹ค. ์ด๋•Œ ์ ‘๊ทผ ํ•  ๋•Œ authorization code์™€ redirection url, client id, client seceret์„ ํ•จ๊ป˜ ๋ณด๋‚ด๋Š”๋ฐ ์ด๋ฅผ resource server ๊ฐ€ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๊ฒƒ์— ์ผ์น˜ ํ•˜๋ฉด access token์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค.

 

-       ์ด์ œ access token ์„ ๋ฐœ๊ธ‰ํ•˜๊ธฐ ์ „์— authorization code๋Š” ์ž„๋ฌด๋ฅผ ๋งˆ์ณฃ์œผ๋‹ˆ resource server์™€ client์—์„œ authorization code๊ฐ’์„ ์ง€์›Œ ๋ฒ„๋ฆฐ๋‹ค.

 

-       ์ด์ œ access token์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  resource server๋Š” client๋กœ ์ด access token ๊ฐ’์„ ์‘๋‹ตํ•ด์ค€๋‹ค. Client๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ access token์„ ์ €์žฅํ•œ๋‹ค.

 

API ์‚ฌ์šฉํ•˜๊ธฐ

-       Resource server๊ฐ€ client์—๊ฒŒ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ์ง€ ์ž์‹ ์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์„์ง€๋ฅผ ์•Œ๋ ค์ค€ ๊ฒƒ์ด๋‹ค. (Application Programming interface)

-       ์ง์ ‘ ๊ณต์‹ ์‚ฌ์ดํŠธ ๊ฐ€์„œ ๋ณด๋ฉด์„œ ํ•ด๋ณด์ž!!

 

 

Access_token ์€ ์ˆ˜๋ช…์ด ์žˆ๋‹ค..์ผ๋ฐ˜์ ์œผ๋กœ 1์‹œ๊ฐ„ 2์‹œ๊ฐ„ ๊ธธ๊ฒŒ๋Š” 60์ผ..

ํ•˜์ง€๋งŒ ์ˆ˜๋ช…์ด ๋๋‚˜๋ฉด API์— ์ ‘์†ํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. 

๊ทธ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ผ๊ณ  ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋Ÿฌ์šธ ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด refresh token

 

 

์œ„์˜ ๊ทธ๋ฆผ์—์„œ (F) ์ƒํ™ฉ์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์€ Access Token์˜ ์ˆ˜๋ช…์ด ๋๋‚ซ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ ํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ refresh token์„ Authorization server ์— ์ „๋‹ฌ ํ•˜๋ฉด์„œ Access Token ์„ ๋‹ค์‹œ ๋ฐ›๋Š”๋‹ค.

 

Access token ๋งŒ ๊ฐฑ์‹ ๋  ์ˆ˜๋„ ์žˆ๊ณ  Access toeken ๊ณผ ํ•จ๊ป˜ refresh token ๋˜ํ•œ ๊ฐฑ์‹  ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์„œ๋ฒ„ ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค.