android์ OAuth ํ๋กํ ์ฝ ์ฐ๋์ ๋ํ์ฌ
์์ฑ์ : ๋ฐ์ํ
Present Time : 2018-07-25-WED
Last Updated : 2018-07-31-TUE
๋ณธ ์ฃผ์ ๋ฅผ ์ ํํ๊ฒ ๋ ๊ณ๊ธฐ๋ ๋ฐํ์๊ฐ ์ง์ํ๊ณ ์ ํ๋ ํ์ฌ์ ์ฐ๋์ฌํญ์ ํฌํจ๋์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค.
์ง์ํ๊ณ ์ ํ๋ ํ์ฌ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ํ์ฌ์์๋ ์ค์ํ๊ฒ ์ฌ๊ธธ ์ ์๋ ์ฃผ์ ๋ผ๊ณ ์๊ฐ๋์ด ๋ฐํํ๊ฒ ๋์๋ค.
๋ฐํ์๋ ์๋์์ง๋ง ๋ค๋ฅธ ํ์ฌ ๋ฉด์ ์์ ์ถฉ๋ถํ ์ง๋ฌธ์ผ๋ก ๋์ฌ ์ ์๋ ๊ฐ๋ ์ด๋๊น ์๊ณ ์์ผ๋ฉด ๋์์ด ๋ง์ด ๋ ๊ฒ ๊ฐ๋ค.
: ์ธ์ฆ์ ์ํ ์คํ ์คํ ๋๋ ํ๋กํ ์ฝ
OAuth์ ํ์ ์ด์ ์๋ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์์ ์์ด๋์ ์ํธ๊ฐ ๋ ธ์ถ๋์ง ์๋๋ก ํ๋ฉด์ API ์ ๊ทผ ์์(API Access Delegation)์ด ๊ฐ๋ฅํ ์ฌ๋ฌ ์ธ์ฆ ๋ฐฉ๋ฒ์ด ์์๋ค. Google๊ณผ Yahoo!, AOL, Amazon ๋ฑ์์๋ ๊ฐ๊ฐ์ ์ธ์ฆ ๋ฐฉ์์ ์ ์ํ์ฌ ์ฌ์ฉํ๋ค. (๊ฐ๊ฐ์ ์ธ์ฆ ๋ฐฉ์์ ๋ํด์๋ ๊ฐ์ธ์ ์ผ๋ก ์ฐพ์๋ณด๋๋ก ํ์!)
OAuth๋ ์ด๋ ๊ฒ ์ ๊ฐ๊ฐ์ธ ์ธ์ฆ๋ฐฉ์์ ํ์คํํ ์ธ์ฆ๋ฐฉ์์ด๋ค. OAuth๋ฅผ ์ด์ฉํ๋ฉด ์ด ์ธ์ฆ์ ๊ณต์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ผ๋ฆฌ๋ ๋ณ๋์ ์ธ์ฆ์ด ํ์์๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค.
OAuth 1.0์ด ๋์จ ๋๋ 2007๋ ์ด๋ฉฐ, ์ดํ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์ ๋ฒ์ ์ธ OAuth 1.0 revision A ๊ฐ 2008๋ ์ ๋์๋ค.
2007๋ ์ ๋์จ OAuth 1.0์ ๋น๊ณต์ ๋ ผ์์ฒด์ ์ํด ์ต์ด๋ก ๋ง๋ค์ด์ง ๊ฒ์ด๊ณ , 2010๋ IETF OAuth ์ํน๊ทธ๋ฃน์ ์ํด ์ด ํ๋กํ ์ฝ์ด IETF ํ์ค ํ๋กํ ์ฝ๋ก ๋ฐํ๋ ๊ฒ์ด๋ค.
ํ์ฌ ๋์ ์๋ OAuth 2.0์ ๋๋ํํธ ๋จ๊ณ์ ์๋ ๊ฒ์ผ๋ก, IETF OAuth ์ํน๊ทธ๋ฃน์ด ์ฃผ์ถ์ด ๋์ด ๋ง๋ ๊ฒ์ด๋ค. OAuth 2.0์ OAuth 1.0๊ณผ ํธํ๋์ง ์์ง๋ง, ์ธ์ฆ ์ ์ฐจ๊ฐ ๊ฐ๋ตํ๋ค๋ ์ฅ์ ์ด ์๋ค. ๊ทธ๋์ ์์ง ์ต์ข ์์ด ๋์ค์ง ์์์์๋ ์ฌ๋ฌ ์ธํฐ๋ท ์๋น์ค์์ OAuth 2.0์ ์ฌ์ฉํ๊ณ ์๋ค. ๋ค์ ํ๋ ๋ํ์ ์ธ ์ธํฐ๋ท ์๋น์ค ๊ธฐ์ ์์ ์ฌ์ฉํ๋ OAuth์ ๋ฒ์ ์ ์ ๋ฆฌํ ๊ฒ์ด๋ค.
[ํ1 - ์ธํฐ๋ท ์๋น์คย ๊ธฐ์ ์ด ์ฌ์ฉํ๋ OAuth ๋ฒ์ ]
์ธํฐ๋ท ์๋น์ค ๊ธฐ์ | OAuth ๋ฒ์ |
---|---|
2.0 | |
Foursquare | 2.0 |
2.0 | |
Microsoft (Hotmail, Messenger, Xbox) | 2.0 |
2.0 | |
Daum(ํฐ์คํ ๋ฆฌ | 2.0 |
NHN (์คํAPI) | 1.0a |
Daum(์์ฆ, ์คํAPI) | 1.0a |
MySpace | 1.0a |
Netflix | 1.0a |
ํธ์ํฐ | 1.0a |
Vimeo | 1.0a |
Yahoo! | 1.0a |
: OAuth๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ฆ์ ํ๋ ๊ณผ์
๋ ๋ช ์ด ์ถค์ ์ถ๋ฏ ์ ํํ๊ฒ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ ์ฌ๋ฏธ์๊ฒ ๋ช ๋ช ํ ๊ฒ์ด๋ค.
[ํ2 - OAuth 1.0 ๋ํ ์ฉ์ด]
์ฉ์ด | ์ค๋ช |
---|---|
User | Service Provider์ ๊ณ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์, Consumer๋ฅผ ์ด์ฉํ๋ ค๋ ์ฌ์ฉ์ |
Service Provider | OAuth๋ฅผ ์ฌ์ฉํ๋ Open API๋ฅผ ์ ๊ณตํ๋ ์๋น์ค |
Consumer | OAuth ์ธ์ฆ์ ์ฌ์ฉํด Service Provider์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์น ์๋น์ค |
Request Token | Consumer๊ฐ Service Provider์๊ฒ ์ ๊ทผ ๊ถํ์ ์ธ์ฆ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ. ์ธ์ฆ์ด ์๋ฃ๋ ํ์๋ Access Token์ผ๋ก ๊ตํํ๋ค. |
Access Token | ์ธ์ฆ ํ Consumer๊ฐ Service Provider์ ์์์ ์ ๊ทผํ๊ธฐ ์ํ ํค๋ฅผ ํฌํจํ ๊ฐ |
[ํ3 - ํ์ฌ ๋ฐฉ๋ฌธ ๊ณผ์ ๊ณผ OAuth ์ธ์ฆ ๊ณผ์ ]
ํ์ฌ ๋ฐฉ๋ฌธ ๊ณผ์ | OAuth ์ธ์ฆ ๊ณผ์ | |
---|---|---|
1. | ๋๋ฐฉ๋ฌธ์จ๊ฐ ์๋ด ๋ฐ์คํฌ์์ ์ ๋ฌด์ ์ธ ๋ชฉ์ ์ผ๋ก ๊น๋ชฉ์ ์จ๋ฅผ ๋ง๋๋ฌ ์๋ค๊ณ ๋งํ๋ค. | Request Token์ ์์ฒญ๊ณผ ๋ฐ๊ธ |
2. | ์๋ด ๋ฐ์คํฌ์์๋ ๊น๋ชฉ์ ์จ์๊ฒ ๋๋ฐฉ๋ฌธ์จ๊ฐ ๋ฐฉ๋ฌธํ๋ค๊ณ ์ฐ๋ฝํ๋ค. | ์ฌ์ฉ์ ์ธ์ฆ ํ์ด์ง ํธ์ถ |
3. | ๊น๋ชฉ์ ์จ๊ฐ ์๋ด ๋ฐ์คํฌ๋ก ์ฐพ์์ ๋๋ฐฉ๋ฌธ์จ์ ์ ์์ ํ์ธํด ์ค๋ค. | ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์๋ฃ |
4. | ๊น๋ชฉ์ ์จ๋ ์ ๋ฌด ๋ชฉ์ ๊ณผ ์ธ์ ์ฌํญ์ ์๋ด ๋ฐ์คํฌ์์ ๊ธฐ๋กํ๋ค. | ์ฌ์ฉ์์ ๊ถํ ์์ฒญ ๋ฐ ์๋ฝ |
5. | ์๋ด ๋ฐ์คํฌ์์ ๋๋ฐฉ๋ฌธ ์จ์๊ฒ ๋ฐฉ๋ฌธ์ฆ์ ๋ฐ๊ธํด ์ค๋ค. | Access Token ๋ฐ๊ธ |
6. | ๊น๋ชฉ์ ์จ์ ๋๋ฐฉ๋ฌธ์จ๋ ์ ํด์ง ์ฅ์๋ก ์ด๋ํด ์ ๋ฌด๋ฅผ ์งํํ๋ค. | Access Token์ ์ด์ฉํด ์๋น์ค ์ ๋ณด ์์ฒญ |
์์ ํ์ ๋ฐ๋ฅด๋ฉด, Access Token์ ๋ฐฉ๋ฌธ์ฆ์ด๋ผ๊ณ ์ดํดํ ์ ์๋ค. ์ด ๋ฐฉ๋ฌธ์ฆ์ผ๋ก ์ฌ์ ์ ํ๋ฝ๋ ๊ณต๊ฐ์ ์ถ์ ํ ์ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก Access Token์ ๊ฐ์ง๊ณ ์๋ Consumer๋ ์ฌ์ ์ ํธ์ถ์ด ํ๋ฝ๋ Service Provider์ ์คํ API๋ฅผ ํธ์ถํ ์ ์๋ ๊ฒ์ด๋ค.
OAuth 1.0์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฌ์ฉํ๊ธฐ ๊ณค๋ํ๋ค๋ ๋จ์ ์ด ์๋ค. ๋ํ ์ ์ฐจ๊ฐ ๋ณต์กํ์ฌ OAuth ๊ตฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํ๊ธฐ ์ด๋ ต๊ณ , ์ด๋ฐ์ ๋ฐ ๋ณต์กํ ์ ์ฐจ ๋๋ฌธ์ Service Provider์๊ฒ๋ ์ฐ์ฐ ๋ถ๋ด์ด ๋ฐ์ํ๋ค.
OAuth 2.0์ ์ด๋ฌํ ๋จ์ ์ ๊ฐ์ ํ ๊ฒ์ด๋ค. OAuth 1.0๊ณผ ํธํ์ฑ์ด ์๊ณ , ์์ง ์ต์ข ์์ด ๋ฐํ๋ ๊ฒ์ ์๋์ง๋ง ์ฌ๋ฌ ์ธํฐ๋ท ์๋น์ค ๊ธฐ์ ์์ OAuth 2.0์ ์ฌ์ฉํ๊ณ ์๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ง์ ๊ฐํ
- ์ํธํ๊ฐ ํ์ ์์ HTTPS๋ฅผ ์ฌ์ฉํ๊ณ HMAC์ ์ฌ์ฉํ์ง ์๋๋ค.
- Siganature ๋จ์ํ ์ ๋ ฌ๊ณผ URL ์ธ์ฝ๋ฉ์ด ํ์ ์๋ค.
- Access Token ๊ฐฑ์ OAuth 1.0์์ Access Token์ ๋ฐ์ผ๋ฉด Access Token์ ๊ณ์ ์ฌ์ฉํ ์ ์์๋ค. ํธ์ํฐ์ ๊ฒฝ์ฐ์๋ Access Token์ ๋ง๋ฃ์ํค์ง ์๋๋ค. OAuth 2.0์์๋ ๋ณด์ ๊ฐํ๋ฅผ ์ํด Access Token์ Life-time์ ์ง์ ํ ์ ์๋๋ก ํ๋ค.
์ด์ธ์๋ OAuth 2.0์์ ์ฌ์ฉํ๋ ์ฉ์ด ์ฒด๊ณ๋ OAuth 1.0๊ณผ ์์ ํ ๋ค๋ฅด๋ค. ๊ฐ์ ๋ชฉ์ ์ ๋ค๋ฅธ ํ๋กํ ์ฝ์ด๋ผ๊ณ ์ดํด๋ ๊ฒ์ด ์ข๋ค. ํ์ง๋ง ์์ง ์ต์ข ์์ด ๋์ค์ง ์์๊ธฐ ๋๋ฌธ์, ํ์ฌ๋ก์๋ OAuth 2.0์ ํน์ง๋ง ํ์ ํ๋ ๊ฒ์ผ๋ก๋ ์ถฉ๋ถํ ๋ฏ ํ๋ค.
NAVER๊ฐ์ ๊ฒฝ์ฐ๋ ๊ณต์์ ์ธ ๊ฐ๋ฐ ๊ฐ์ด๋๊ฐ ๋ฐ๋ก ์๊ณ , Facebook์ด๋ Google์ ๊ณต์์ ์๋์ง๋ง(๊ณต์ ๋ฌธ์๋ ์๋ ๊ฒ ๊ฐ๋ค) ๋ง์ ์ฌ๋๋ค์ด ๊ฐ์ด๋๋ฅผ ์น์ ํ๊ฒ ์ค๋ช ํด๋์๋ค. ๊ทธ๋์ ๋จ๊ณ๋ง๋ค์ ์ธ์ธํ ์ค๋ช ๋ณด๋ค ์ฃผ์ํด์ผ ํ ์ ์์ฃผ๋ก ์ ์ด๋ณด์๋ค.
- minSdkVersion๋ API 15 ์ด์์ผ๋ก ์ค์ ํ๋ค.
- ํด์ ํค์ ๊ฒฝ์ฐ, ์ปค๋ฉ๋ ์ฐฝ์ ํตํด ํ์ธํ ์ ์์ง๋ง ์ฝ๋๋ก ํ์ธํ ์๋ ์๋ค.
https://developers.facebook.com/docs/facebook-login/android?sdk=maven
http://superwony.tistory.com/13
: Lightweight Directory Access Protocol
์ธํฐ๋ท์ด๋ ๊ธฐ์ ๋ด์ ์ธํธ๋ผ๋ท ๋ฑ ๋คํธ์ํฌ ์์ ์๋ ํ์ผ์ด๋ ์ฅ์น๋ค๊ณผ ๊ฐ์ ์์ ๋ฑ์ ์์น๋ฅผ ์ฐพ์ ์ ์๊ฒ ํด์ฃผ๋ ์ํํธ์จ์ด ํ๋กํ ์ฝ์ด๋ค.
๋คํธ์ํฌ์์, ๋๋ ํ ๋ฆฌ๋ ์ด๋ค ์์์ด ๋คํธ์ํฌ ์์ ์ด๋์ ์๋๊ฐ๋ฅผ ์๋ ค์ค๋ค. ์ธํฐ๋ท์ ํฌํจํ TCP/IP ๋คํธ์ํฌ์์, DNS ๋ ํน์ ๋คํธ์ํฌ ์ฃผ์์ ๋๋ฉ์ธ ์ด๋ฆ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋๋ ํ ๋ฆฌ ์์คํ ์ด๋ค. ๊ทธ๋ฌ๋, ๋๋ก๋ ๋๋ฉ์ธ ์ด๋ฆ ์กฐ์ฐจ ๋ชจ๋ฅผ ์ ์๋๋ฐ, LDAP๋ ๊ฐ์ฒด๊ฐ ์ด๋์ ์๋์ง ์์ง ๋ชปํ๋๋ผ๋ ๊ทธ๊ฒ์ ๊ฒ์ํ ์ ์๊ฒ ํ๋ค (๋น๋ก ์ถ๊ฐ์ ๋ณด๊ฐ ์์ผ๋ฉด, ๊ฒ์์ ๋์์ ๋๊ฒ ์ง๋ง).
LDAP ๋๋ ํ ๋ฆฌ๋ ์๋์ ๋ํ๋ธ ๊ฒ์ฒ๋ผ, ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋๋ ๋จ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค.
- ๋ฃจํธ ๋๋ ํ ๋ฆฌ (์์์์น ๋๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ทผ์), ๊ฐ๊ฐ ์๋๋ก ๋ป์ด๋๊ฐ๋ค
- ๊ตญ๊ฐ๋ค, ๊ฐ๊ฐ ์๋๋ก ๋ป์ด๋๊ฐ๋ค
- ๊ธฐ๊ด๋ค, ๊ฐ๊ฐ ์๋๋ก ๋ป์ด๋๊ฐ๋ค
- ๊ธฐ๊ด๋ณ ๋จ์ (๋ถ์ ๋ฑ), ๊ฐ๊ฐ์ ์๋๋ก ๋ป์ด๋๊ฐ๋ค
- ๊ฐ์ฒด๋ค (์ฌ๋, ํ์ผ, ๋ฐ ํ๋ฆฐํฐ ๋ฑ๊ณผ ๊ฐ์ ๊ณต์ ์์๋ค)
SSO(Single Sign On) : ํ ๋ฒ์ ์ธ์ฆ ๊ณผ์ ์ผ๋ก ์ฌ๋ฌ ์ปดํจํฐ ์์ ์์์ ์ด์ฉ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ธ์ฆ ๊ธฐ๋ฅ
SSO์ ๊ธฐ๋ณธ DB๊ฐ ์ฃผ๋ก LDAP์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค.
-
์ฌ์ฉ์๊ด๋ฆฌ์ ์ฃผ๋ก ์ด์ฉ๋๊ณ ์๋ค.
์๋ํ๋ฉด, LDAP๋ ์ง์ ๋์ด์๋ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ์ฝ์ด์ค๋๋ฐ ์์ฃผ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
-
์ธ์ฆ์๋ฅผ ์ ์ฅํ๋๋ฐ ๋ง์ด ์ด์ฉํ๊ณ ์๋ค.ย ๊ธ์ต๊ถ์์๋ ๊ฑฐ์ ์ฌ์ฉํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค
LDAP๋ ๋๋ ํ ๋ฆฌ ์๋น์ค ์์ธ์ค๋ฅผ ์ํ ํด๋ผ์ด์ธํธ-์๋ฒ ํ๋กํ ์ฝ์ด๋ค.
๋๋ ํ ๋ฆฌ๋ ๋ฐ์ดํ๋ฒ ์ด์ค์ ์ ์ฌํ์ง๋ง ๋๋ ํ ๋ฆฌ ๋ด์ ์ ๋ณด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๊ธฐ๋ณด๋ค๋ ์ฝ๊ธฐ ์์ ์ ๋น๋ฒํ ์ด์ฉ๋๋ค. ๋ฐ๋ผ์, ๋๋ ํ ๋ฆฌ๋ ํต์์ ์ผ๋ก ์ ๊ท ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ด ๋ค๋์ ๋ณต์กํ(high-volume complex) ๊ฐฑ์ ์ ์ํด ์ฌ์ฉํ๋ ๋ณต์กํ ์ฒ๋ฆฌ(transaction) ๋๋ ๋กค๋ฐฑ ๊ณํ(ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๋ฐ๋ก ์ ์ ์ฒดํฌํฌ์ธํธ๋ก ๋์๊ฐ๊ธฐ, roll-back)์ ์ํํ์ง ์๋๋ค.
์ฆ, ๋๋ ํ ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก, ์ ์ด๋ ํ์ฉ๋๋ค๋ฉด, ์ ๋ถ ๊ฐฑ์ ๋๊ฑฐ๋ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
์์ฃผ ๋ณ๊ฒฝ๋๋ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ LDAP๋ณด๋ค๋ RDBMS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ณ๋ค.
https://d2.naver.com/helloworld/24942
๋ฉด์ ์ ๋ณด๊ธฐ ์ ์ ํ ๋ฒ์ฉ ์ฝ๊ณ ๊ฐ๋ฉด ๊ฐ๋ ์ ์ผ๋ก ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.