์ํ์ฝ๋ฉ 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 ๋ํ ๊ฐฑ์ ๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ์๋ฒ ๋ง๋ค ๋ค๋ฅด๋ค.
'Server > basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Mac ์์ bitnami MAMP ์ค์น (0) | 2020.10.04 |
---|---|
APM ์์ค์ค์น(3) - PHP ์์ค ์ค์น (0) | 2020.09.29 |
APM ์์ค์ค์น(2) - MySQL ์์ค ์ค์น (0) | 2020.09.28 |
APM ์์ค์ค์น(1) - Apache ์์ค ์ค์น (0) | 2020.09.27 |
์๋ฒ๋ ๋ฌด์์ธ๊ฐ? (0) | 2020.09.27 |