최근검색어
    오픈API
    OAuth 인증
    OAuth(Open Authorization)란?
    OAuth는 트위터의 개발자를 비롯한 일련의 웹 개발자들이 오픈 API의 인증(authentication; 이 사용자가 누구인가?)과 권한 부여(authorization; 로그인 한 사용자가 무엇을 할 수 있는가?)를 동시에 제공하는 인증 프로토콜을 찾다가, 결국 새롭게 만든 표준 사용자 인증 프로토콜입니다.
    OAuth는 이전의 인증 방식인 구글의 AuthSub, 야후의 BBAuth, AOL의 OpenAuth 등의 장점을 결합하여 탄생되었으며, 2007년 12월 OAuth Core 1.0 스펙이 선언되었고 2010년 4월 IETF에서 OAuth 1.0 표준안을 RFC 5849(tools.ietf.org/html/rfc5849)로 발표하였습니다.
    현재는 응용프로그램 개발자의 편리성과 단순성을 좀 더 고려하여 새롭게 발표된 OAuth 2.0 표준안이 RFC 6749(tools.ietf.org/html/rfc6749) 로 제정되어 널리 사용되고 있습니다. 저희 오픈뱅킹은 OAuth 2.0 스펙을 준용하여 개발되었습니다.
    용어 정의
    OAuth는 기본적으로 3명의 서비스 주체 간에 이루어지는 3자(3-legged) 인증을 기반으로 합니다. 여기서 3자란, 각각 (1)API를 제공하는 오픈뱅킹, (2)오픈뱅킹이 제공하는 API를 이용하여 응용프로그램을 개발하는 이용기관, (3)이용기관의 응용프로그램을 사용하는 사용자를 의미합니다.
    OAuth 2.0에서는 아래와 같이 용어를 정의하고 있습니다.
    • 1 . 자원 소유자(Resource Owner)
      오픈뱅킹이 API를 통하여 제공하는 자원, 즉 데이터의 원래 소유자를 의미합니다. 예를 들면 오픈뱅킹이 제공하는 계좌 잔액 및 거래내역을 데이터라 고 하면 계좌의 소유자인 예금주가 자원 소유자가 됩니다. 오픈 API를 사용하여 개발된 응용프로그램을 사용하는 일반고객을 의미하며, OAuth 1.0 에서는 사용자(User)라는 용어를 쓰기도 하였습니다.
    • 2 . 자원 서버(Resource server)
      보호된 자원을 제공하는 서버를 의미합니다. 즉, 은행 오픈 API를 통하여 계좌와 관련된 각종 데이터를 제공하는 오픈뱅킹 서버가 해당됩니다.
      OAuth 1.0에서는 서비스 제공자(Service Provider)라는 용어를 쓰기도 하였습니다.
    • 3 . 클라이언트(Client)
      오픈 API를 호출하는 응용프로그램을 의미합니다. 즉, 이용기관이 오픈 API를 사용하여 개발한 앱 혹은 웹 프로그램이 해당됩니다. 넓은 의미로 이용 기관 자체를 의미하기도 합니다. OAuth 1.0에서는 API를 소비한다는 의미에서 소비자(Consumer)라는 용어를 쓰기도 하였습니다.
    • 4 . 인증 서버(Authorization Server)
      자원 소유자로부터 접근 권한을 획득한 이후에 자원에 접근하기 위한 접근 토큰(Access Token)을 발급해주는 서버를 의미합니다. 즉, 오픈뱅킹 서버에 해당되며, 자원을 제공하는 자원 서버와 인증 처리를 수행하는 인증 서버를 기능적으로 분리하여 정의하였을 뿐입니다. OAuth 1.0에서는 통칭하여 서비스 제공자(Service Provider)로 정의하였습니다.
      오픈뱅킹에서는 이해의 편의를 위하여, (1)API를 제공하는 오픈뱅킹, (2)오픈뱅킹이 제공하는 API를 이용하여 개발된 이용기관의 응용프로그램(클라이언트), (3)이용기관의 응용프로그램을 사용하는 사용자로 지칭하겠습니다.
      인증서버
    사용자 인증(3-legged)
    클라이언트는 오픈뱅킹에 접속하여 API를 사용하기 위하여, 가정 먼저 사용자 인증(로그인)을 수행하여야 합니다. 사용자 인증은 클라이언트가 사용자의 오픈뱅킹 회원정보를 얻기 위한 절차이며, 사용자는 오픈뱅킹 계좌등록 시 진행되는 사용자 인증 절차를 진행하여 사용자 인증을 완료하게 됩니다.
    동 절차는 OAuth 2.0의 Authorization Code Grant 절차를 준용하여 개발되었으며, 클라이언트는 사용자의 동의를 먼저 획득한 후에 이어서 오픈뱅킹 서버로부터 접근 토큰(Access Token)을 획득하여, 토큰의 유효기간 내에서 언제든지 사용자 회원정보에 접근할 수 있습니다.
    계좌등록(3-legged)
    클라이언트는 사용자 인증을 완료한 후에 사용자가 정보를 제공받고자 하는 계좌를 등록하도록 유도해야 합니다. 단, 오픈뱅킹에서는 사용자 편의를 위하여 멀티 스코프를 지원하고 있으므로 사용자 인증을 개별적으로 수행할 이유는 없으며 사용자 인증과 계좌등록이 동시에 이뤄지게 됩니다.
    사용자의 개인정보를 보호하기 위하여 클라이언트는 사용자의 계좌정보(은행명, 계좌번호 등)를 직접 수집하여 등록할 수 없으며, 항시 오픈뱅킹의 계좌등록 페이지를 통하여 등록하여야 합니다. 동 절차는 OAuth 2.0의 Authorization Code Grant 절차를 준용하여 개발되었습니다.
    계좌등록
    핀테크이용번호
    오픈뱅킹의 계좌등록 API를 사용하여 사용자의 계좌등록을 완료하면, 클라이언트는 사용자의 계좌번호 대신에 일종의 가상계좌번호 개념인 "핀테크 이용번호"를 응답 결과로서 수집하게 됩니다. 핀테크이용번호는 24자리 숫자로 구성되어 있으며, 클라이언트-사용자 쌍에 고유한 번호로 매핑됩니다.
    즉, 핀테크이용번호는 해당 클라이언트 내에서만 유효합니다. 사용자는 클라이언트의 사용자인증 API 호출에 따라 팝업된 오픈뱅킹 계좌등록 페이지 에서 계좌를 등록할 수 있으며, 계좌해지 API를 호출하여 해당 계좌에 대한 서비스 이용을 해지할 수도 있습니다. 클라이언트는 핀테크이용번호를 수집한 이후에 잔액조회, 거래내역조회, 출금이체, 입금이체 시에 핀테크이용번호를 입력하여 API 기능을 수행할 수 있습니다.
    클라이언트 인증(2-legged)
    오픈 API의 성격에 따라서 사용자의 개입 없이 클라이언트와 오픈뱅킹 간의 양자(2-legged) 인증만을 획득할 수도 있습니다. 예를 들면 계좌실명조회 API와 같이 특정 사용자의 계좌정보를 조회하는 것이 아니라 클라이언트가 알고 있는 임의의 계좌번호에 대하여 예금주의 실명을 확인코자 하는 경우에, 오픈뱅킹은 클라이언트의 유효성만 확인한 후에 데이터를 응답하게 됩니다. 이용기관이 오픈뱅킹에 가입하고 가입승인이 완료된 후에 앱 등록을 완료하게 되면, 하나의 클라이언트에 대해서 클라이언트 아이디(ID)와 비밀번호(Secret)를 발급받게 됩니다. 이후 오픈뱅킹은 클라이언트 아이디와 비밀번호를 확인하여 클라이언트 인증을 수행하게 됩니다. 동 절차는 OAuth 2.0의 Client Credentials Grant 절차를 준용하여 개발되었습니다.
    계좌등록
    loading_icon