본문 바로가기

소셜네트워킹서비스(sns)

Open API를 사용하기 위한 인증표준 OAuth

네이버의 Open Api에서 발췌된 내용으로는 Open API를 사용하기 위해선 인증이 필요합니다. 인증방식의 표준이 없기 때문에 제 각각의 방법으로 개발되고 있는 실정인데요. 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth OAuth는 제각각의 인증방식을 표준화하고 가장 좋은 방법만 가져다 만들었습니다.

 

즉 매쉬업 서비스로 만들어진 어플리케이션이 다른 어플리케이션의 사용자 정보를 접근할 수 있는 표준화된 방법을 제공하는 스펙입니다.

 

위 내용을 조금 더 쉽게 이야기 하면 A라는 서비스를 이용하고 있는 사용자는 A의 아이디와 패스워드를 가지고 있습니다. A 서비스를 이용해서 B 서비스를 만들기 위해서는 A 서비스의 사용자 정보가 필요한데 이때 OAuth의 인증방식을 통해 B 에서는 인증된 A의 개인정보 토큰을 받아 로그인을 하게 하며 이는 A 에서 로그인 한것과 같이 B에서도 처리하기 위한 방법입니다. 


국내에서는 오픈아이디에서 OAuth 인증방식을 채택해서 사용하였고 최근 네이트에서도 같은 방식을 채택해서 사용하고 있습니다. 그리고 트위터에서는 2010년 7월부터는 서드파티에게 기존의 인증방식 중 OAuth 만을 사용가능하도록 한다니 관련 개발자 분들을 참고 하시길 바랍니다~~


그럼. OAuth 인증방식을 이해하기 위해선 용어를 미리 숙지하셔야 하니 참고하세요.

 

◦ 서비스 프로바이더(Service Provider) – OPENAPI를 제공하는 서비스를 말합니다. 

◦ 사용자(users) - 서비스 프로바이더 혹은(그리고) 컨수머를 사용하는 이를 말합니다. 

◦ 컨수머(Consumer) – API를 사용하여 개발된 애플리케이션 서비스를 말합니다.

◦ 보호된 자원(Protected Resources): 서비스 프로바이더에 존재하는 사용자의 데이터를 의미합니다.

◦ 컨수머 개발자(Consumer Developer) : 컨수머를 개발하는 개인 혹은 단체

◦ 컨수머 키(Consumer Key) : 서비스 프로바이더에게 컨수머 자신임을 인증하기 위한 키

◦ 컨수머 시크릿(Consumer Secret) : 컨수머의 컨수머 키 소유권한이 있는지 인증하기 위한 키

◦ 토큰(Tokens) – 컨수머에서 서비스 프로바이더에 있는 사용자의 보호된 자원에 접근하기 위해 사용되는 사용자의 인증정보입니다.

 ▪  리퀘스트 토큰(Request Token) :  컨수머가 사용자에게  접근권환을 획득하는 과정에서 사용하는 값이며, 이것은 차후 액세스 토큰으로 교환됩니다.

▪  리퀘스트 토큰 시크릿(Request Token Secret) :  리퀘스트토큰이 사용자의 것임을 인증하기 위한 값입니다.

▪  액세스 토큰(Access Token) : 컨수머가 사용자의 서비스 프로바이더를 통해서가 아닌 컨수머를 통해서 보호된 자원에 접근할 수 있는 권한을 받기 위한 값입니다.

▪  액세스 토큰 시크릿(Access Token Secret) : 액세스토큰이 사용자의 것임을 인증하기 위한 값입니다.

 


OAuth 인증방식의 흐름도입니다.

 


 

OAuth 인증 방식에는 7가지의 인증과정으로 이루어져 있습니다.


A; Consumer가 Request Token 요청

B; Service Provider가 Request Token 발급 

C; Consumer는 사용자를 Service Provider로 이동사용자를 인증하고 토큰 발급을 확인함

D; Service Provider는 사용자를 Consumer로 이동 

E; Consumer는 Access Token 요청 

F; Service Provider는 Consumer의 신원과 Request Token 확인Access Token 발급

G; Consumer는 Access Token으로 사용자 정보에 접근

 


[관련사이트] 

http://oauth.net/http://wiki.oauth.net/OAuthSummit2008

http://dev.springnote.com/pages/1083036

 

[OAuth 인증 관련 예제]

http://myruby.net/pages/1168058


(출처 : Stareverun's Social Story)