OAuth 용어 정리

안드로이드에서 트위터 및 페이스북의 외부 연동을 위해서는 OAuth라는 방법을 이용하여야 한다.
OAuth의 개념을 익히기 위해 다음과 같이 짧은 글로 정리를 해본다.
 
OAuth : An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.
(데스크탑과 웹 어플리케이션에서 간단하고 표준적인 방법으로 안전한 API 인증을 하도록 하는 공개 프로토콜입니다.)
 image

그렇다 OAuth는 사용자의 아이디 및 패스워드를 제 3자에게 제공을 해주지 않고 사용자의 허가 하에 특정 키를 발급하여 그 키를 이용하여 사용자 계정에 접근 할 수 있는 권한을 말한다. 이 방법을 쓰는 이유는 다음과 같다.
예전에는 사용자 아이디와 패스워드를 이용하여 로그인 할 수 있는 API가 있었다. 영세 업체들이 트위터 및 페이스북 연동을 위하여 사용자에게 트위터, 페이스북의 아이디, 패스워드를 직접 입력 받아 로그인하여 쓸 수 있는 서비스를 구현 하였다. 하지만 이 서비스 체계에는 다음과 같은 2가지 문제점이 있었다.
  1. 영세 업체에서 사용자 아이디와 패스워드를 직접 관리하여 보안에 구멍이 생길 경우 트위터, 페이스북의 계정 정보가 노출 될 위험이 있음
  2. 의도적으로 영세 사용자 아이디와 패스워드를 수집하는 업체가 있을 수 있음
해당 문제를 보안하기 위해 트위터, 페이스북등의 SNS 업체들은 OAuth라는 공개된 표준 기술을 이용하여 사용자의 계정에 엑세스 할 수 있는 권한을 사용자에게 허가 후 업체가 이용하게 할 수 있는 정책을 사용하게 되었다.

다음 플로우는 야후 페이지에서 설명한 플로우이다.

간단히 정리하자면

A 서비스의 특정 기능을 B 서비스가 쓰고 싶은데 B 서비스에서 A 서비스를 접근하기 위한 인증
A 서비스는 B 서비스에게 A 서비스 계정 정보를 주지 않고 토큰이라는 것을 발행하여 접근 할 수 있게 함
image
출처 : http://developer.yahoo.com/oauth/guide/oauth-auth-flow.html

  • 서비스 프로바이더(Service Provider) – API를 제공하는 서비스 주체(페이스북, 트위터)
  • 컨수머(Consumer) – 서비스 프로바이더로 부터 제공된 API를 사용하여 개발된 애플리케이션(내가 만들 어플)
  • 사용자(users) – 일반 유저(내가 만든 어플을 사용하는 사람들)
  • 보호된 자원(Protected Resources): 서비스 프로바이터의 데이터들(페이스북 대화 내용)
  • 컨수머 키(Consumer Key) : 서비스 프로바이더에 접근할 컨수머의 인증키
  • 컨수머 시크릿(Consumer Secret) : 컨수머 키의 암호키
  • 요청 토큰(Request Token) : 사용자로부터 위임 권한(Authorization)을 얻기 위해 Consumer가 사용하는 토큰, Access Token으로 교환된다.
  • 접근 토근(Access Token) : 사용자의 보호된 자원에 접근하기 위해 Consumer가 사용하는 값







    이 블로그의 인기 게시물

    ASP에서 C# 언어로 만든 DLL 호출

    안드로이드 스튜디오를 설치 후 필수로 사용되는 플러그인