OAuth2
이용자는 내가 만든 서비스를 이용하려고 합니다.
이 때 나의 서비스는 이용자의 다른 서비스(Google, Kakao, Naver)의 기능을 연동해서 서비스 하고싶습니다.
예를 들어, 나의 서비스로 작성한 글들을 자동으로 네이버나 구글의 Calender에 등록하고 싶고, 또한 이용자도 원한다면, 이용자는 저에게 그들의 아이디와 비밀번호(네이버, 카카오 등)를 알려주어야 할것입니다
하지만 이거슨 매우 부담스러운 일입니다.
사용자 입장에서는 신뢰할수 없는 저에게 그들의 정보를 주어야 하며, 저는 그들의 정보를 아주 안전하게 잘 가지고 있어야 합니다.
이렇게 되었을 때 저는 그들(네이버,카카오 등)의 모든 기능을 사용할 수 있을 것입니다.
바로 여기에서 이러한 위험성을 보완하고 상호 작용할수 있게 해주는 것이 OAuth 입니다.
User는 Google, Facbook, Twitter 등을 이용해서 AccessToken을 발급받고, 우리는 그 AccessToken을 통해
그들이 제공해주는 기능을 사용할 수 있게 됩니다. 이 때 개발자 입장에서는 User의 ID/PWD 등의 정보가 요구되지 않습니다.
일단 여기서 알아야 할것은 OAuth 을 통해 AccessToken 을 얻고 이것으로 우리는 그들의 서비스를 이용할 것이다!
용어
Resource Server(카카오, 네이버, 구글 등) & Authorization Server
로그인 API, G-mail 등 서비스를 제공해주는 플랫폼(서버)
Resource Server는 데이터를 가지고 있는 서버이며, Authorization Server는 인증과 관련된 처리를 전담하는 서버
Resource Owner(이용자)
우리의 서비스를 이용해줄 사용자
Client(잇츠 미)
내가 제공하려는 서비스(우리의 서비스)
OAuth 사용법
1. 등록
플랫폼마다 다르겠지만, OAuth를 등록하기 위해 필요한 기본적인 3가지
- Client ID - Client를 식별하기 위한 ID
- Client Sercret - Client의 비밀번호
- Authorized redirect URIs - Client가 요청할 URI, 만약에 다른 주소로 요청할 경우 무시
후훗 평소에는 이용자(Resource Owner)가 우리의 서비스(Client)를 마구 이용하고 있을 겁니다. 이 때 우리의 서비스와 연동해서 페이스북에 글을 등록하던지, 아니면 구글의 Calender에 일정을 등록을 하던지 막 뭘 하려면, 이용자는 Resource Server 측에 요청을 해야합니다. 이놈들을 자주 보셨을 겁니다
이 버튼의 소스코드를 들여다보면, Client ID , redirect Uri ,제공해주는 서비스가 무엇인지 알 수 있고, 이용자가 저 주소로 접속을 하게 되면, Resource Server가 현재 이용자가 로그인이 되어있는지 확인을 하고, 안되있을 경우 로그인을 하도록 유도합니다. 그 다음 접속을 지금 시도하고 있는 Client의 주소와 redirect Uri 와 같은지 다른지를 확인하고, 또 부여했던 Client id 도 확인하게 됩니다. 만약 모든것이 알맞다면, Resource Server는 이용자에게 Client 한테 사용하고자 하는 기능의 권한을 줄 것인지 물어보며, 사용자가 허용하면 Resource Server의 DB에는 허용했다는 정보가 저장됨가 동시에 Client는 접근할 수 있는권한을 가지게 됩니다. 그래서 막 이용자는 Client의 서비스를 이용해서 페이스북에 글을 올린다던지, 뭐 이용자가 Client에게 권한을 허용할 것들을 이용자는 Client를 통해 이용할 수 있게 됩니다.
'IT' 카테고리의 다른 글
마크다운[Typora] 문법 요약 (0) | 2017.11.09 |
---|---|
SD 카드 용량이 63MB? 16GB를 되찾아주는방법 (0) | 2017.03.01 |
동글동글 ! 블루투스 4.0 동글 ! (0) | 2016.12.18 |