์ฝ๋ฉ์ ๋ํด ๊ด์ฌ์ด ์๊ฒจ ์ฌํด ์ด์ ์ ๊น ์ํ์ฝ๋ฉ์ผ๋ก HTML๊ณผ CSS๋ฅผ ๊ณต๋ถํ๋ ๊ฒฝํ์ด ์์ต๋๋ค. ๊ทธ ๋ OAuth๊ฐ ๋ญ์ง์ ๋ํด ์์ธํ ์ค๋ช ์์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ฌ์ฉํด๋ดค๋๋ฐ ์ด๋ฒ ๊ธฐํ๋ฅผ ํตํด OAuth๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ๊ณต๋ถํ ์ ์์์ต๋๋ค.
OAuth๋?
์ง์ ์์ฑํ ์๋ฒ์์ ์ธ์ฆ์ ์ฒ๋ฆฌํด์ฃผ๋ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, OAuth๋ ์ธ์ฆ์ ์ค๊ฐํด์ฃผ๋ ๋งค์ปค๋์ฆ์ ๋๋ค. ๋ณด์๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์๊ฒ ๊ถํ์ ์ ๊ณตํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๋ ํ๋กํ ์ฝ์ ๋งํฉ๋๋ค. ์ด๋ฏธ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์น์๋น์ค(GitHub, google, facebook ๋ฑ)์์ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋์ ํด์ฃผ๊ณ , ์ ๊ทผ ๊ถํ์ ๋ํ ํ ํฐ์ ๋ฐ๊ธํ ํ, ์ด๋ฅผ ์ด์ฉํด ๋ด ์๋ฒ์์ ์ธ์ฆ์ด ๊ฐ๋ฅํด์ง๋๋ค.
OAuth๋ ์ธ์ฆ(Authentication)์ ๋ค๋ฅธ ์๋น์ค์ ๋งก๊ธธ ๋ฟ, ์ ๊ทผ ๊ถํ ๊ด๋ฆฌ(Authorization)์ ํด๋น ์๋น์ค ํ์ฌ์ ๋ชซ์ด๋ฏ๋ก, ์ฌ์ฉ์ ์ ๋ณด๊ฐ ํด๋น ์๋น์ค ํ์ฌ ์๋ฒ์ ์ ์ฅ๋๋ ๊ฒ์ ๋ณํจ์ด ์์ต๋๋ค.
OAuth ๊ธฐ์ด ์ฉ์ด
- Resource Owner: ์ก์ธ์ค ์ค์ธ ๋ฆฌ์์ค์ ์ ์ ์ ๋๋ค. ๋ง์ฝ A์ ๊ตฌ๊ธ ๊ณ์ ์ ์ด์ฉํด์ App์ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ, Resource owner๋ A์ ๋๋ค.
- Client: Resource owner๋ฅผ ๋์ ํ์ฌ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ์์ฉํ๋ก๊ทธ๋จ์ ๋๋ค. ์์์ ๋งํ ์์์์๋ App์ด ํด๋ผ์ด์ธํธ๊ฐ ๋ ์ ์์ต๋๋ค.
- Resource Server: Client์ ์์ฒญ์ ์๋ฝํ๊ณ ์๋ตํ ์ ์๋ ์๋ฒ์ ๋๋ค.
- Authorization Server: Client ๋ฐ Resource Owner๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ธ์ฆํ ํ, Resource Server์๊ฒ Access Token์ ๋ฐ๊ธํ๋ ์๋ฒ์ ๋๋ค.
- Authorization Grant: Client๊ฐ Access Token์ ์ป์ ๋ ์ฌ์ฉํ๋ ์๊ฒฉ ์ฆ๋ช ์ ์ ํ์ ๋๋ค.
- Authorization Code: Access Token์ ๋ฐ๊ธ๋ฐ๊ธฐ ์ ์ ํ์ํ ์ฝ๋์ ๋๋ค. Client ID๋ก ์ฝ๋๋ฅผ ๋ฐ๊ณ , Client Secret๊ณผ ์ฝ๋๋ฅผ ์ด์ฉํด Access Token์ ๋ฐ์์ต๋๋ค.
- Access Token: ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉ๋๋ Credentials ์ ๋๋ค. Authorization Code์ Client Secret์ ์ด์ฉํด ๋ฐ์์ค๋ Access Token์ผ๋ก Resource Server์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- Scope: ํ ํฐ์ ๊ถํ์ ์ ์ํฉ๋๋ค. ์ฃผ์ด์ง Access Token์ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์๋ ๋ฆฌ์์ค์ ๋ฒ์์ ๋๋ค.
OAuth 2.0 ์ธ์ฆ ๋ฐฉ์
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL 60: [๋คํธ์ํฌ] ์ฌํ (0) | 2021.10.27 |
---|---|
TIL 59: [์ปดํจํฐ ๊ณตํ] ๊ธฐ์ด (0) | 2021.10.26 |
TIL 57: [์ธ์ฆ/๋ณด์] ๊ธฐ์ด - ํ ํฐ(Token) (1) | 2021.10.25 |
TIL 56 - 2: [์ธ์ฆ/๋ณด์] ๊ธฐ์ด (0) | 2021.10.22 |
TIL 56 - 1: [์ธ์ฆ/๋ณด์] ๊ธฐ์ด (0) | 2021.10.21 |