OAuth์ ์ฅ์ ๊ณผ ํ๊ณ
OAuth์ ์ฅ์ ๊ณผ ํ๊ณ
์ฅ์
- ๋ณด์ ๊ฐํ : ๋น๋ฐ๋ฒํธ๋ฅผ ๊ณต์ ํ์ง ์๊ณ ํ ํฐ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ ๊ณตํ์ฌ ๋ณด์์ ๊ฐํํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ : ์์ ๋ก๊ทธ์ธ ๋ฑ์ผ๋ก ๋น ๋ฅธ ์ธ์ฆ๊ณผ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค.
- ๋ถ๋ถ์ ๊ถํ ๋ถ์ฌ : ํน์ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ๋ํด ์ ํ๋ ๊ถํ ๋ง ๋ถ์ฌํ ์ ์์ต๋๋ค.
- ๋ฒ์ฉ์ฑ : ๋ค์ํ API์ ์๋น์ค์์ ํ์คํ๋ ์ธ์ฆ ๋ฐฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
ํ๊ณ
- ๊ตฌํ ๋ณต์ก์ฑ : OAuth๋ ์ธ์ฆ ์๋ฒ, ํด๋ผ์ด์ธํธ, ๋ฆฌ์์ค ์๋ฒ ๊ฐ ๋ณต์กํ ๊ตฌ์ฑ์ผ๋ก ์ด๊ธฐ ์ค์ ์ด ์ด๋ ต์ต๋๋ค .
- ํ ํฐ ํ์ทจ ์ํ : Access Token ์ด ํ์ทจ๋ ๊ฒฝ์ฐ ๋ณด์ ์ํ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- Refresh Token ๊ด๋ฆฌ ํ์ : Access Token ๋ง๋ฃ ํ์๋ Refresh Token ์ผ๋ก ์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์์ผ ํ๋ฏ๋ก ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
OAuth์ ์ฃผ์ ๊ตฌ์ฑ ์์
1. ํด๋ผ์ด์ธํธ(Client)
OAuth๋ฅผ ์์ฒญํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์: ํผํธ๋์ค ์ฑ์ด ๊ตฌ๊ธ API์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ํด๋ผ์ด์ธํธ ๋ก ๋์ํฉ๋๋ค.
2. ๋ฆฌ์์ค ์์ ์(Resource Owner)
OAuth๋ฅผ ํตํด ๋ณดํธ๋ ๋ฆฌ์์ค(๋ฐ์ดํฐ)๋ฅผ ์์ ํ ์ฌ์ฉ์์ ๋๋ค. ์: ์ฌ์ฉ์ ๋ณธ์ธ์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ํ์ผ.
3. ๊ถํ ๋ถ์ฌ ์๋ฒ(Authorization Server)
์ธ์ฆ๊ณผ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ด๋นํ๋ ์๋ฒ์ ๋๋ค. ์: ๊ตฌ๊ธ, ํ์ด์ค๋ถ์ ๋ก๊ทธ์ธ ์๋ฒ.
4. ๋ฆฌ์์ค ์๋ฒ(Resource Server)
๋ณดํธ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ์๋ฒ์ ๋๋ค. ์: ๊ตฌ๊ธ ๋๋ผ์ด๋ธ API๊ฐ ๋ฆฌ์์ค ์๋ฒ ์ญํ ์ ์ํํฉ๋๋ค.
OAuth์ ๋ค์ํ ๊ถํ ๋ถ์ฌ ๋ฐฉ์
๋ฐฉ์ | ์ค๋ช | ์ฌ์ฉ ์์ |
---|---|---|
๊ถํ ๋ถ์ฌ ์ฝ๋ ๋ฐฉ์ | ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์ฝ๋๋ฅผ ์ฌ์ฉํด Access Token ๋ฐ๊ธ | ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ |
Implicit Grant ๋ฐฉ์ | ๋ธ๋ผ์ฐ์ ์์ ์ง์ Access Token ์ ๋ฐ๊ธ | ๊ตฌํ ํด๋ผ์ด์ธํธ ์์ ์ฌ์ฉ |
Resource Owner ๋ฐฉ์ | ์ฌ์ฉ์๊ฐ ์ง์ ์๊ฒฉ ์ฆ๋ช ์ ์ ๊ณต | ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ |
Client Credentials ๋ฐฉ์ | ํด๋ผ์ด์ธํธ๊ฐ ์๊ฒฉ ์ฆ๋ช ์ผ๋ก ํ ํฐ ๋ฐ๊ธ | ์๋ฒ ๊ฐ ํต์ ์ ์ฌ์ฉ |
OAuth์ PKCE(Proof Key for Code Exchange) ๋ณด์ ๊ฐํ
PKCE๋ ํด๋ผ์ด์ธํธ์ ๋ณด์ ๊ฐํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ ๊ณต๊ฐ ํด๋ผ์ด์ธํธ ๊ฐ OAuth๋ฅผ ์ฌ์ฉํ ๋ ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์ง ํฉ๋๋ค.
PKCE ํ๋ฆ
- ํด๋ผ์ด์ธํธ๋ ์ฝ๋ ์ฑ๋ฆฐ์ง(Code Challenge) ๋ฅผ ์์ฑํ์ฌ ๊ถํ ๋ถ์ฌ ์์ฒญ์ ํฌํจํฉ๋๋ค.
- ๊ถํ ๋ถ์ฌ ์๋ฒ๊ฐ ์๋ต ์ ์ฝ๋ ์ฑ๋ฆฐ์ง ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ์ผ์นํ ๊ฒฝ์ฐ Access Token์ ๋ฐ๊ธํฉ๋๋ค.
๊ฒฐ๋ก : OAuth๋ ํ๋ ์น ๋ณด์์ ํต์ฌ
OAuth๋ ๋ณด์๊ณผ ์ฌ์ฉ์ฑ ์ ๋์์ ์ ๊ณตํ๋ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ํ๋กํ ์ฝ์ ๋๋ค. ๊ตฌ๊ธ, ํ์ด์ค๋ถ ๋ฑ ๋ค์ํ ํ๋ซํผ์์ ํ์ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉ ๋๋ฉฐ, ๊ฐ๋ฐ์๋ OAuth๋ฅผ ํตํด ์์ ํ๊ฒ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ์ ๊ทผ ํ ์ ์์ต๋๋ค. ์ต์ ๋ณด์ ํธ๋ ๋์ ๋ง์ถฐ TLS, PKCE ์ ๊ฐ์ ๊ธฐ์ ์ ํ์ฉํด ๋ณด์์ ๊ฐํํ์ธ์.
FAQ
Q1. OAuth๋ ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋์?
A1. OAuth๋ ์ฃผ๋ก ์ธ๊ฐ(Authorization) ์ ์ง์คํ๋ฉฐ, ์ธ์ฆ(Authentication)์ OpenID Connect ์ ๊ฐ์ ํ๋กํ ์ฝ์ด ๋ด๋นํฉ๋๋ค.
Q2. OAuth 2.0๊ณผ OAuth 1.0์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
A2. OAuth 2.0์ ๋ ๊ฐ๋จํ ๊ตฌ์กฐ์ ๋ ๋ง์ ๊ธฐ๋ฅ ์ ์ ๊ณตํ๋ฉฐ, OAuth 1.0์ ๋ณต์กํ ์๋ช
์ ์ฐจ๋ฅผ ๊ฐ์ ํ์ต๋๋ค.
Q3. Refresh Token์ ์ ํ์ํ๋์?
A3. Access Token์ ์งง์ ์ ํจ ๊ธฐ๊ฐ ์ ๊ฐ์ง๋ฉฐ, ๋ง๋ฃ๋ ํ Refresh Token ์ผ๋ก ์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์์ผ ํฉ๋๋ค.
Q4. PKCE๋ ์ธ์ ์ฌ์ฉํด์ผ ํ๋์?
A4. ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ฐ์ ๊ณต๊ฐ ํด๋ผ์ด์ธํธ์์๋ PKCE๋ฅผ ์ฌ์ฉํด ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์ง ํด์ผ ํฉ๋๋ค.
Q5. OAuth๋ ๋ชจ๋ API์์ ์ฌ์ฉ๋๋์?
A5. ๋ชจ๋ API๊ฐ OAuth๋ฅผ ์๊ตฌํ์ง๋ ์์ง๋ง, ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ ๊ทผํ๋ API๋ ๋๋ถ๋ถ OAuth๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋๊ธ