๐ OAuth๋?
ํ ์๋น์ค์์ ๋ค๋ฅธ ์๋น์ค๋ก ๊ถํ ๋ถ์ฌ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ ์น ์ฌ์ดํธ์์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ด๋ ์นด์นด์ค ๋ก๊ทธ์ธ๊ณผ ๊ฐ์ด ์ธ๋ถ ์ธ์ฆ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์ข ์ข ๋ณผ ์ ์๋๋ฐ, ๊ตฌ๊ธ์ด๋ ์นด์นด์ค์ ๊ฐ์ด ์ธ๋ถ ์ธ์ฆ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ๊ฒ์ OAuth ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ธ์ฆ ๋ฐฉ์์ด๋ค.
OAuth๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํน์ ์์คํ ์ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ธ์ฆ์ ํตํด ์ฌ์ฉ์์ ๋ฆฌ์์ค ์ ๊ทผ ๊ถํ์ ์์๋ฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Authentication (์ธ์ฆ) | ํด๋น ์ฌ์ฉ์๊ฐ ์์ ์ด ์ฃผ์ฅํ๋ ์ฌ๋์ธ์ง ํ์ธํ๋ ๊ฒ์ผ๋ก, ์๋ณ๊ณผ ์ฐ๊ด๋ ๊ฐ๋ |
Authorization (์ธ๊ฐ) | ํด๋น ์ฌ์ฉ์์๊ฒ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒ์ผ๋ก, ์ ๊ทผ๊ณผ ์ฐ๊ด๋ ๊ฐ๋ |
OAuth 2.0์ ํต์ฌ ์ฃผ์ฒด
- Resource Owner
๋ฆฌ์์ค๋ฅผ ์์ ํ ์ฌ์ฉ์ - Client
๋ฆฌ์์ค ์๋ฒ์ ์์์ ์ด์ฉํ๊ณ ์ ํ๋ ์๋น์ค, ๋ณดํต ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๋ ค๋ ์๋น์ค๋ฅผ ์๋ฏธํ๋ค. - Server(Authorization & Resource)
Resource Owner๋ฅผ ์ธ์ฆํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํด์ฃผ๋ ์๋ฒ๋ก, Resource Server๋ ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ํธ์ํฐ์ ๊ฐ์ด ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ ์๋ฒ๋ฅผ ์๋ฏธํ๋ค.
OAuth 2.0์ ๋์ ๊ณผ์
1~4. Resource Owner๊ฐ '๊ตฌ๊ธ๋ก ๋ก๊ทธ์ธ'๊ณผ ๊ฐ์ ๋ฒํผ์ ํด๋ฆญํด์ ๋ก๊ทธ์ธ ์์ฒญ ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ์ ๊ณต๋ฐ๊ณ ID์ PW๋ฅผ ์ ๋ ฅํด์ ๋ก๊ทธ์ธํ๋ ๊ณผ์ ์ด๋ค.
5~6. ์ธ์ฆ์ด ์ฑ๊ณตํ๋ฉด Authorization Server๋ Authorization Code๋ฅผ ๋ฐ๊ธํ๋ฉฐ ์ ๊ณตํ Redirect URI๋ก ์ฌ์ฉ์๋ฅผ ๋ฆฌ๋ค์ด๋ ํธ ์ํจ๋ค. (6๋ฒ ๊ณผ์ ์์ Authorization Code๋ฅผ ํฌํจํ์ฌ ์ฌ์ฉ์๋ฅผ ๋ฆฌ๋ค์ด๋ ํธ ์ํจ๋ค.)
๐กAuthorization Code
ํด๋ผ์ด์ธํธ๊ฐ Access Token์ ํ๋ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์์ ์ฝ๋์ด๋ค. (์ผ๋ฐ์ ์ผ๋ก 1~10๋ถ ์ ๋์ ์๋ช ์๊ฐ์ ๊ฐ์ง๋ค.)
์ ์ฌ์ง์์ ์๋น์ค URL์ ๋ค์ด๋ฒ API๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ (์ฐ๋ฆฌ ์๋น์ค)์ URL์ด๋ฉฐ Callback URL์ด ๋ก๊ทธ์ธ ์ฑ๊ณต ์ Authorization Code๋ฅผ ์ ๋ฌํ๋ URL์ด๋ค. ์ฆ, ๋ค์ด๋ฒ ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ๊ฒ ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค์ ํ Callback URL๋ก Authorization Code๊ฐ ์ ๋ฌ๋๊ฒ ๋๋ค.
7~9. ํด๋ผ์ด์ธํธ๋ Authorization Code๋ฅผ Authorization Server์ ์ ๋ฌํ์ฌ Access Token์ ์๋ต๋ฐ์ ํ ๋ฐ๊ธ ๋ฐ์ ํ ํฐ์ ์ ์ฅํ๋ค. (์ด๋ Access Token์ ์ 3์์๊ฒ ์ ์ถ๋๋ฉด ์๋๊ธฐ ๋๋ฌธ์ HTTPS ์ฐ๊ฒฐ์ ํตํด์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.)
5๋ฒ๋ถํฐ 9๋ฒ๊น์ง์ ๊ณผ์ ์ ํตํด (Authorization Code๋ฅผ ๋ฐ๊ธ ๋ฐ๊ณ ์ด๋ฅผ ํตํด Access Token์ ๋ฐ๊ธ ๋ฐ๋ ๊ณผ์ ) Access Token์ ์์ ํ๊ฒ ๋ณดํธํ ์ ์๋ค. Authorization Code๋ฅผ ํ๋ก ํธ์๋๋ก ์ ๋ฌํ๊ณ ํ๋ก ํธ์๋๋ ์ด๋ฅผ ๋ฐฑ์๋๋ก ์ ๋ฌํ๋ค. ์ฝ๋๋ฅผ ์ ๋ฌ ๋ฐ์ ๋ฐฑ์๋๋ Authorization Code๋ฅผ Authorization Server์ ์ ๋ฌํ๋ฉฐ Access Token์ ๋ฐ๊ธ๋ฐ๋๋ค. ์ด๋ ๊ฒ Access Token์ ์ฐ๋ฆฌ ์๋น์ค์ OAuth ์๋น์ค์ ๋ฐฑ์ฑ๋์์๋ง ์ ์ก๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉ์๊ฐ Access Token์ ๊ฐ๋ก์ฑ๊ธฐ ์ด๋ ต๋ค.
11~14. Resource Owner๊ฐ Resource Server์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ์ ์์ฒญํ๋ค. ํด๋ผ์ด์ธํธ๋ ์ ์ฅํด๋ Access Token์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ณ Resource Owner์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
OAuth 2.0์ ์ค์ฝํ
์ค์ฝํ๋ผ๋ ๊ฐ๋ ์ ํตํด ์ ์ ๋ฆฌ์์ค์ ๋ํ ํด๋ผ์ด์ธํธ์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ ํํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์ ์ฌ์ง์ ์ฌ์ฉ API ๋ถ๋ถ์ด ์ค์ฝํ์ ํด๋นํ๋๋ฐ ๋ค์ด๋ฒ์์ ์ฌ์ ์ ์ธ๋ถ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์ ๊ณตํ๋ ์ ๋ณด ์ค ์ฐ๋ฆฌ ์๋น์ค์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ ๋ณด๋ฅผ ์ ํํ ์ ์๋ค. (์ด๋ ๋ค์ด๋ฒ๋ Resource Server์ ํด๋นํ๋ค.)
→ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌํ ์ scope : name, email ์ด๋ฐ ํ์์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.
[์ฐธ๊ณ ]
https://hudi.blog/oauth-2.0/
OAuth 2.0 ๊ฐ๋ ๊ณผ ๋์์๋ฆฌ
2022๋ 07์ 13์ผ์ ์์ฑํ ๊ธ์ ๋ณด์ถฉํ์ฌ ์๋ก ํฌ์คํ ํ ๊ธ์ด๋ค. OAuth ๋ฑ์ฅ ๋ฐฐ๊ฒฝ ์ฐ๋ฆฌ์ ์๋น์ค๊ฐ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๊ตฌ๊ธ์ ์บ๋ฆฐ๋์ ์ผ์ ์ ์ถ๊ฐํ๊ฑฐ๋, ํ์ด์ค๋ถ, ํธ์ํฐ์ ๊ธ์ ๋จ๊ธฐ๋ ๊ธฐ๋ฅ์
hudi.blog
https://iam.furo.one/post/concept-oauth
Furo
๋ค์ด๊ฐ๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์๊ณผ ์ธ์ฆ์ ์์ญ์ ์ ๋๋ก ์ดํดํ๊ธฐ ์ํด์๋, OAuth, JWT, SSO ๋ฑ์ ํต์ฌ์ ์ธ ์ธ์ฆ ํ์ค์ ์ต์ํด์ ธ์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ ์คํ์ ์ด์ฉํ๊ฑฐ๋ ์ง์
iam.furo.one
https://www.cloudflare.com/ko-kr/learning/access-management/what-is-oauth/
https://ksh-coding.tistory.com/62
Spring Security + JWT๋ฅผ ์ด์ฉํ ์์ฒด Login & OAuth2 Login(๊ตฌ๊ธ, ๋ค์ด๋ฒ, ์นด์นด์ค) API ๊ตฌํ (5) - OAuth๋? / OAuth
๋ณธ๊ฒฉ์ ์ผ๋ก, OAuth2 ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ธฐ ์ ์, OAuth๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค. 1. OAuth(Open Authorization)๋? OAuth์ ์ฌ์ ์ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. OAuth๋ ์ธํฐ๋ท ์ฌ์ฉ์๋ค์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๊ณตํ์ง
ksh-coding.tistory.com
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋์์ธ ํจํด] 01. ์ด๋ํฐ ํจํด (adapter pattern) (2) | 2025.01.29 |
---|---|
Web Server์ WAS์ ์ฐจ์ด (2) | 2024.11.24 |
ํ๋ก์ ์๋ฒ(Proxy server) (0) | 2024.11.18 |
์ค์์ฒ๋ฆฌ์ฅ์น(CPU) ์๋ ์๋ฆฌ (1) | 2024.11.17 |
๊ต์ฐฉ์ํ (0) | 2024.11.16 |