๐
๋ชฉ์ฐจ
๊ฐ๋
๊ฐ๋
- Third Party Application์ ์ธ์ฆ ๊ถํ ๋ถ์ฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
- ์ธ๋ถ ์ฌ์ดํธ์ ์ ์ฅ๋ ์์ ์ ์ ๋ณด์ ๋ํด ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ ๊ณตํต ์๋จ์ผ๋ก ์ฌ์ฉ๋๋ค.
๊ฐ๋ฐฉํ ํ์ค
- OAuth ๊ธฐ๋ฐ ์๋ฒ์์ ์ธ์ฆ์ด ํ์ํ API๋ฅผ ํธ์ถํ ๋๋ OAuth ํ ํฐ์ ๋ฐ๋์ ์ด์ฉํ๋ค.
- ์ธ๋ถ SNS ๊ณ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐํธ ํ์๊ฐ์ & ๋ก๊ทธ์ธ์ ํ ์ ์๊ฒ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
- ๋ฟ๋ง ์๋๋ผ, ์ธ๋ถ App์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋ค. [๊ธฐํ Api]
- Google ๋ก๊ทธ์ธ โ API ํต์ โ ์ฌ์ฉ์ Google Calendar ์ ๋ณด ์ด๋
์ฅ์ : ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ณ ์๋ ์๋น์ค์ ์ ๋ณด๋ฅผ ๊ฐ๊ณตํ์ฌ ๋ณด๋ค ๊ฐ์น ์๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ ๊ณตํ ์ ์๋ค.
Authentication(์ธ์ฆ) / Authorization(ํ๊ฐ)
Authentication(์ธ์ฆ) / Authorization(ํ๊ฐ)
์ผ๋ฐ๋ก๊ทธ์ธ : ์์ด๋ & ๋น๋ฐ๋ฒํธ๋ฅผ ํตํด ์ธ์ฆ์ ํ๋ ๊ฒ
OAuth๋ก๊ทธ์ธ : ํ App์ ์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํด ์ฐ๋ฆฌ์ App์ด ํ๋ฝ๋ฐ์ ์ฌ์ฉ์ ์ธ์ฆ์ ํ๋ ๊ฒ
OAuth Actor
OAuth Actor
Resource Server: Client๊ฐ ์ ์ดํ ์์(resource)์ ๋ณด์ ํ ์๋ฒ- Twitter, Google, Facebook ๋ฑ ์ฌ์ฉ์์ Api๋ฅผ ์ ๊ณตํ๋ ํ App
Resource Owner: ์์(resource) ์์ ์- ๋ก๊ทธ์ธ์ ํํ๋ ์ค์ ์ฌ์ฉ์
Client: Resource Server์ ์ ์ํด์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ (Web Application)- ๋ค์ ๋งํด, ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์๋น์ค
OAuth [Client - Server]
OAuth [Client - Server]

์์ฝ: Client์์ Server์ Token์ ๋ฐ๊ณ , ๊ทธ Token์ ๊ฐ์ง๊ณ ๋ค์ Server์ ์์ฒญํด์ ์ํ๋ ์์์ ํ๋ํ ์ ์๋ค.
- Token์ ์ข
๋ฅ
- Access Token : ์์ฒญ ์ ์ฐจ๋ฅผ ์ ์์ ์ผ๋ก ์ข ๋ฃํ Client์๊ฒ ๋ฐ๊ธ (์๊ฐ ์ ํ ์์)
- Refresh Token : "Resource Server"๊ฐ ์๋๋ผ "Authorization Server"์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ (์๊ฐ ์ ํ ์์)
- Token์ Apple์ Keychain ์ ์ฅ์์ ์ ์ฅํ๋ค.
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ
Flow
- MyApp(Client)์ด Facebook(Resource Server)์ API๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ๋ฑ๋ก ์์ฒญํฉ๋๋ค.
- Facebook(Resource Server)์ MyApp(Client)๋ฅผ ์๋ณํ ์ ์๋ Client ID & Secret์ ๋ฐ๊ธํด์ค๋๋ค.
- ์ฌ์ฉ์(Resource Owner)๋ MyApp(Client)์์ Facebook ๋ก๊ทธ์ธ์ ์์ฒญํฉ๋๋ค.
- MyApp(Client)์ ์ฌ์ฉ์(Resource Owner)์๊ฒ Facebook(Resource Server) ๋ก๊ทธ์ธ ํ๋ฉด์ ๋์์ค๋๋ค.
- ์ฌ์ฉ์(Resource Owner)๋ MyApp(Client)์ด Facebook(Resource Server) ์์ ์ ์ ๋ณด์ ์ ๊ทผํด๋ ๊ด์ฐฎ์์ง์ ๋ํ ๋์๋ฅผ ๋ฐ์ต๋๋ค. ("MyApp์์ ๋น์ ์ Facebook ์ ๋ณด๋ฅผ ์ฌ์ฉํด๋ ๊ด์ฐฎ๊ฒ ์ต๋๊น?")
- ์ฌ์ฉ์๊ฐ MyApp์๊ฒ Facebook ๊ถํ์ ํ์ฉํ์ ๋
- Facebook(Resource Server)์ MyApp(Client)์๊ฒ ์ํธํ ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- MyApp(Client)์ 2๋ฒ์์ ๋ฐ๊ธ ๋ฐ์ Client ID & Secret์ ์ํธํ ์ฝ๋์ ํจ๊ป Facebook(Resource Server)์ผ๋ก ๋ค์ ๋ณด๋ ๋๋ค.
- Facebook(Resource Server)์
์ํธํ ์ฝ๋, Client ID & Secret์ด ๋ชจ๋ ์์ ์ด ์ ๊ณตํ ๊ฒ๊ณผ ์ผ์นํ๋ค๊ณ ํ๋จํ์ ๋,์ต์ข ์ ๊ทผ ๊ถํ ๋ถ์ฌ์ ์๋ฏธ๋ก Access Token์ ๋ฐ๊ธํด์ค๋๋ค.
- ์ฌ์ฉ์๊ฐ MyApp์๊ฒ Facebook ๊ถํ์ ๊ฑฐ๋ถํ์ ๋
- Facebook ๋ก๊ทธ์ธ ์ ๋ณด์ ๋ํ ์ ๊ทผ์ด ์๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์ธ์ด ๋ถ๊ฐํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ MyApp์๊ฒ Facebook ๊ถํ์ ํ์ฉํ์ ๋
์ฉ์ด ์ ๋ฆฌ
์ฉ์ด ์ ๋ฆฌ
๐ฅย Web Application
- ์น ๋ธ๋ผ์ฐ์ ์ ์น ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ํตํ ์ ์๋๋ก ๋ง๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
๐ฅย Web Container
- ๋์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ค. Servlet Container๋ผ๊ณ ๋ ํ๋ฉฐ JSP, Servlet์ ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ์ด๋ค. JSP, Servlet์ ์น ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ ์ ์ธ ํ์ด์ง๋ฅผ ์์ฑํ๋ค. ํ์ง๋ง,
Web Container๋ ์น ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์ ๋ณด๋ก ๋์ ํ์ด์ง๋ฅผ ์์ฑํ์ฌ ์น ์๋ฒ์๊ฒ ์ ๋ฌํด์ค ์ ์๋ค.
๐ฅย Web Application Server (WAS)
- Web Server + Web Container, ์ ์ ์ธ ํ์ด์ง(HTML)์์ ์ฒ๋ฆฌํ ์ ์๋ Business Logic, DB ์กฐํ ๋ฑ ๋์ ์ธ ์ปจํ
์ธ ๋ฅผ ์ ๊ณตํ๋ค.
ํฐ์บฃ
๐ฅย [์น ์๋ฒ๋ ์ ์ ์ฒ๋ฆฌ, WAS๋ ๋์ ์ฒ๋ฆฌ]๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด, ์๋ฒ ๋ถํ๋ฅผ ๋ง์ผ๋ฉด์ ๋ฌผ๋ฆฌ์ ์ธ ๋ถ๋ฆฌ๋ฅผ ํตํด ๋ณด์์ ๊ฐํํ ์ ์๋ค.
Uploaded by N2T