๊ฐ๋ ์ ๋ฆฌ
๋ด๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ Client, ๋ค๋ฅธ ์๋น์ค๋ฅผ Resource Server, ๋ ์๋น์ค๋ฅผ ๋ชจ๋ ์ด์ฉํ๋ ์ฌ์ฉ์๋ฅผ Resource Owner๋ผ๊ณ ์ ์ํ๋ค. ์ถ๊ฐ์ ์ผ๋ก Resource Server์์ ์ธ์ฆ์ ๋ด๋นํ๋ ์๋ฒ๋ฅผ ๋ฐ๋ก Authorization Server๋ผ๊ณ ํ๋ค.
์ด๋ ๊ฒ ์ฐํฉํด์ ์ธ์ฆ์ฒด๊ณ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ federated Identity๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฐฐ๊ฒฝ
Client๊ฐ Resource Server(google, facebook ๋ฑ)์ ์๋ Resource Owner์ ๊ณ์ ์ ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ด ์์๊น? Resource Server์ ๋ํ Resource Owner์ id, pw๋ฅผ ์ ๊ณต๋ฐ์ผ๋ฉด ๋ ์ข๊ฒ ์ง๋ง ๋ณด์ ์ ๋ขฐ ๋ฌธ์ ๊ฐ ์๋ค.
๋ฐ๋ผ์ oAuth๊ฐ ๋์๋ค. oAuth๋ฅผ ์ด์ฉํ๋ฉด, Resource Owner์ ์์ฒญ์ ํตํด ๋ค๋ฅธ ์๋น์ค๊ฐ accessToken์ด๋ผ๋ ์ผ์ข ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊ธํ๋ค. Client๋ accessToken์ ํตํด Resource Server์ ์ ๊ทผํ ์ ์๋๋ฐ, ์ด ๋ฐฉ์์ ๊ธฐ์กด id, pw๋ฅผ ์ด์ฉํ ๋ฐฉ์๋ณด๋ค ์ ํ์ ์ธ ์ด์ฉ์ ํ ์ ์๋ค.
๋ฑ๋ก
์ฐ์ Resource Server์ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ค๋ฉด Client๋ ๋ฑ๋ก์ ํด์ผํ๋ค. ๋ฑ๋กํ๋ ๋ฐฉ์์ ๊ฐ๊ธฐ ๋ค๋ฅด์ง๋ง ๊ณตํต์ ์ผ๋ก ๋ฐ๋ ์์๊ฐ ์๋ค.
- Client ID
- Client Secret
- Authorized redirect URIs : Resource server๊ฐ Authorized Code ๊ฐ์ ์ ๋ฌํด์ฃผ๋ url. ํด๋น url์์ ์์ฒญํ๋ ๊ฒ๋ง ์๋ตํจ
Resource Owner์ ์น์ธ
๋ฑ๋ก ํ์ Resource Server์ Client๋ ๋ฑ๋ก ์์ ์ฌ์ฉํ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ ์๋ค.
Resource Owner๊ฐ Client๋ฅผ ์ฌ์ฉํ๋ ๊ณผ์ ์์ Resource Server๋ฅผ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋ฉด, Client๋ Resource Owner์ ์ธ์ฆ์ ์ํ UI๋ฅผ ๋ณด์ฌ์ค๋ค. ํด๋น UI๋ฅผ ํตํด Client๋ Resource Server์ Client_id, ํ์ ๊ธฐ๋ฅ, redirected_url ๋ฑ์ ์ ๊ณตํ์ฌ ์ฐ๋ํ๋ค.
Resource Server๋ ํด๋น ์์ฒญ์ ๋ฐ๊ณ , Resource Owner์๊ฒ ๋ก๊ทธ์ธ์ ์์ฒญํ๋ค. ๊ทธ ํ, Client Id์ redirect URL์ ์์ฒญ์์์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด Resource Owner์๊ฒ ํ์ฉํ ์ง๋ฅผ ๋ฌผ์ด๋ณธ๋ค.
๊ทธ๋ฌ๋ฉด Resource Server๋ ์ด๋ค user์ ๋ํด ์ด๋ค Client๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋์ง๋ฅผ ์ ์ฅํ ์ ์๋ค. ์๋ต์ ์ ๊ณตํ๋ค. (์๋ต์ ๋ค์ ์ฑํฐ์)
Resource Server์ ์น์ธ
authorization code(์์ ๋น๋ฐ๋ฒํธ)๋ฅผ Resource Server๊ฐ Resource Owner์๊ฒ ์๋ต์ผ๋ก ์ ๊ณตํ๋ค.
Resource Owner๋ ์๋ต์์์ ์ฃผ์๋ก ์ด๋ํ๊ฒ ๋๋ฉด์, Resource Server๊ฐ ์ ๊ณตํ authorization code๋ฅผ ๋ฐ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ Client๋ Resource Owner๋ฅผ ํตํ์ง ์๊ณ , ๋ฐ๋ก Resource Server๋ก ์ ์ํ๊ฒ ๋๋ค. ์ด ๋, authorization code, redirect_url, client_id, client_secret์ ์ ์กํ๊ธฐ ๋๋ฌธ์ Resource Server๋ ์ฃผ์ด์ง ๊ฐ๋ค์ ๋น๊ตํ์ฌ ํด๋น ์ ๋ณด๊ฐ ์ ํฉํ์ง๋ฅผ ํ๋จํ๋ค.
Access Token ๋ฐ๊ธ
Resource Server๊ฐ authrization code ๊ฐ์ ์์ชฝ์์ ์ง์๋ฒ๋ฆฌ๊ณ accessToken ๊ฐ์ ๋ฐ๊ธํ๋ค. accessToken์ Clientํํ ๋ณด๋ด์ฃผ๋ฉด Client๊ฐ ํด๋น ํ ํฐ์ ์ ์ฅํ๋ค.
์ด์ accessToken์ผ๋ก Resource Server์ ์ ๊ทผํ๋ฉด ํด๋น (Client, ResourceOwner, ๊ธฐ๋ฅ)์ ๋ํด ๋ฐ๋ก ์ธ์ฆ์ด ๋๋ค. ๋ฐฉ์์ ๋ค์ ๋๊ฐ์ง๊ฐ ์๋ค.
- query๋ก accessToken ๋๊ธฐ๊ธฐ
- ๋ ธ์ถ์ ๋ง๊ธฐ ์ํด https(TLS)๋ฅผ ๋ฐ๋์ ์ด์ฉํด์ผํจ
- Bearer Authentication ์ด์ฉํด์ header๋ก ๋๊ธฐ๊ธฐ
- form-encoded body parameter
- ๋ณด์์ ์ด์ ๋ก ๊ถ์ฅ x
- URI Query Parameter
- ๋ณด์์ ์ด์ ๋ก ๊ถ์ฅ x
Refresh Token ๋ฐ๊ธ
accessToken์ ์ผ๋ฐ์ ์ผ๋ก 1์๊ฐ ์ ๋์ ์๋ช ์ด ์๋ค. ํด๋น ์๋ช ์ด ๋๋๋ฉด ๋์ด์ ์ธ์ฆ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ๋ค์ accessToken์ ๋ฐ์์ผํ๋ค.
๋ณดํต accessToken๊ณผ ํจ๊ป refreshToken์ ๋ฐ๊ธํ ํ, accessToken์ ์๋ช ์ด ๋ค๋๋ฉด refreshToken์ผ๋ก accessToken์ ๋ค์ ๋ฐ๊ธ๋ฐ๋๋ค.
์ฐธ๊ณ
https://opentutorials.org/module/3668
'์น (WEB) > ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Refresh Token (0) | 2021.07.22 |
---|---|
Token ์ ์ฅ ์์น (0) | 2021.07.22 |
React-query :: api fetch ์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2021.07.10 |
React-query :: Query Invalidation (0) | 2021.07.10 |
React-query :: Mutations (0) | 2021.07.10 |
Comment