API가이드

데이터 표준 API 인증규격

2. 인증 규격 1) 개인신용정보 전송요구 인증 규격
  1. OAuth 2.0 :

    1정보주체

    의 개인신용정보 전송요구에 따른 업권별 정보제공 API 호출(정보주체의 개인신용정보 전송요구)을 위한 인가‧인증 또는

    2지원API

    호출/제공을 위한 인증 절차는 표준 규격인 OAuth 2.0*을 준용함

    * IETF RFC 6749 – The OAuth 2.0 Authorization Framework

    IETF RFC 7009 – OAuth 2.0 Token Revocation

2) 접근토큰
  1. 발급주체 : 발급주체, 활용주체 등에 따라 접근토큰 별 상이

    - 정보제공 API 호출용
    정보주체의 전송요구 및 인증이 완료되면 정보제공자 또는 중계기관이 API 호출을 위한 접근토큰을 발급하여 마이데이터사업자에게 전달

    - 지원 API 호출용
    마이데이터사업자, 정보제공자 또는 중계기관이 지원API를 호출(종합포털이 API제공)하기 위한 접근토큰으로, 종합포털이 접근토큰을 발급하여 해당 기관에 전달

    - 지원 API 제공용
    종합포털이 지원API를 호출(마이데이터사업자, 정보제공자 또는 중계기관이 API제공)하기 위한 접근토큰으로 해당 기관이 접근토큰을, 종합포털이 접근토큰을 발급하여 해당 기관에 전달

    - 통합인증 API 호출용
    정보제공자 또는 중계기관이 통합인증 API를 호출(통합인증기관 제공)하기 위한 접근토큰으로 통합인증 기관이 접근토큰을 발급하여 해당 기관에 전달

    접근토큰 구분 활용주체
    (접근토큰 발급요청)
    발급주체
    (접근토큰 발급)
    발급시기/용도
    정보제공 API 호출용 마이데이터사업자 정보제공자 또는 중계기관 정보주체의 전송요구 및
    인증 완료 시
    지원 API 호출용 마이데이터사업자, 정보제공자, 중계기관 또는 통합인증기관 종합포털 종합포털이 API제공
    지원 API 제공용 종합포털 마이데이터사업자,
    정보제공자 또는 중계기관
    종합포털이 API호출
    통합인증 API 호출용 정보제공자 또는 제공기관 통합인증기관 통합인증기관이 API 제공
  2. 규격 : 접근토큰 규격은 접근토큰 무결성 보장이 가능한 JWS* 접근토큰 표준 규격을 사용함

    * IETF RFC 7515 - JSON Web Signature(JWS)

    ** (참고) 오픈뱅킹API의 경우도 금융위 보안성 검토 결과 JWS를 준용

    Header, Payload, Signature로 구성되며, Payload 영역에 발급자, 유효기간 등 발급정보를 저장하고, Signature 영역의 전자서명을 통해 위변조 여부를 확인
    JWS 접근토큰 구성

    Header : 서명 알고리즘 및 접근토큰 유형 등을 명시하기 위한 객체

    예시 : { "alg": "HS256", "typ": "JWT" }

    Payload : 다양한 정보(Claim)들을 저장하기 위한 객체

    이름 설명 비고
    iss 접근토큰 발급자 접근토큰을 발급하는 기관의 기관코드
    • 정보제공 API 호출용 : 정보제공자 또는 중계기관 기관코드
    • 지원 API 호출용 : 종합포털 기관코드
    • 지원 API 제공용 : 마이데이터사업자, 정보제공자 또는 중계기관 기관코드
    aud 접근토큰 수신자 접근토큰을 발급받는 기관 식별자
    • 정보제공 API 호출용 : 데이터수신자(마이데이터사업자) 기관코드
    • 지원 API 호출용 : 마이데이터사업자, 정보제공자 또는 중계기관 기관코드
    • 지원 API 제공용 : 종합포털 기관코드
    jti 접근토큰 식별자 발급주체가 토큰을 식별할 수 있는 ID(임의지정)
    exp 접근토큰 만료시간
    (Expiration)
    토큰이 만료될 시간
    scope OAuth 2.0 접근권한 개인신용정보 제공 범위
    (예: "bank.account bank.loan")

    Signature : Header 및 Payload의 서명값

    - 접근토큰 발급주체는 Header 및 Payload를 Base64 인코딩 후 암호화 기술을 이용하여 서명함으로써 접근토큰의 무결성 검증

    - ASCII(BASE64URL(UTF8(Header) || ‘.’ || BASE64URL(Payload))을 서명

    JWS 접근토큰

    - JWS 접근토큰 = BASE64URL(UTF8(Header)) || ‘.’ || BASE64URL(Payload) || ‘.’ || BASE64URL(Signature)

3) 권한(scope)
  1. 정보제공 API 호출용 : 업권별 정보제공 API에 대한 접근권한 관리를 위해서 필요한 정보로서 자산목록 scope와 전송요구 scope로 구분

    자산목록 scope : 전송요구에 앞서 본인의 자산목록(계좌목록, 카드목록 등)을 조회할 수 있는 권한을 지정한 scope

    업권 분류 전송항목 제공 API (resource만 표기) 업권
    은행 계좌 목록 계좌(수신/투자상품/대출상품) 목록 조회 /accounts bank.list
    개인형 IRP 계좌 목록 조회 /irps
    카드 목록 선불카드 목골 조회 /prepaid
    DC 목록 DC형 퇴직연금정보 목골 조회 /dc
    카드 카드 목록 카드 목록 조회 /cards card.list
    선불카드 목록 조회 /prepaid
    금융투자 계좌목록 계좌 목록 조회 /accounts inverst.list
    개인형 IRP 계좌목록 조회 /irps
    DC 목록 DC형 퇴직연금정보 목록 조회 /dc
    보험 보험증권등 목록 보험증권 목록 조회 /insurances insu.list
    대출계좌 목록 조회 /loans
    개인형 IRP 계좌 목록 조회 /irps
    피보험자 보험 목록 조회 /insured
    DC형 목록 DC형 퇴직연금정보 목록 조회 /dc
    전자금융 전자지급수단 목록 전자지급수단 목록 조회 /prepaid efin.list
    계정 목록 계정 목록 조회 /paid
    할부금융 계좌 목록 계좌(대출/운용리스) 목록 조회 /loans capital.list
    보증보험 보증보험 증권 목록 보증보험 증권 목록 조회 /insurances ginsu.list
    통신 계약 목록 통신 계약 목록 조회 /telecoms telecom.list
    P2P P2P 대출 목록 P2P 대출 목록 조회 /leadings p2p.list
    P2P 투자 목록 P2P 대출 목록 조회 /invest
    인수채권 인수채권/금전
    대부 목록
    인수채권/금전대부 목록 조회 /bonds bond.list
    대부 인수채권/금전
    대부 목록
    인수채권/금전대부 목록 조회 /bonds usury.list

    개별인증 : 정보주체가 전송요구할 자산을 선택할 수 있는 화면을 정보제공자가 직접 제공한 후, 정보주체가 전송요구를 완료하면 마이데이터사업자가 개인신용정보 전송요구 내역을 본 API들을 이용하여 조회(3.2.1.1-3 참조)하기 때문에 반드시 "자산목록 scope"가 다중 scope 내에 기본적으로 포함되어 있어야 함(아래 "다중 scope 예시" 참조)

    통합인증 : 정보주체가 전송요구할 자산을 선택할 수 있는 화면을 마이데이터사업자가 제공하기 때문에 정보주체가 전송요구할 개인신용정보를 특정(선택)하기 위해서는 우선 마이데이터사업자에게 자산목록을 조회할 수 있는 권한 필요

    전송요구 scope : 마이데이터사업자가 수집 가능한 정보주체의 개인신용정보 상세 범위 및 권한을 지정한 scope (정보주체가 전송요구 시 선택한 자산에 따라 scope가 결정)

    - 정보주체가 전송요구할 개인신용정보를 특정(선택)하면 전송요구 scope가 정해지게 되며, 정보제공자 및 마이데이터사업자는 해당 scope를 기준으로 권한을 통제

    업권 분류 정보주체의 전송대상 선택 항목
    (화면 UI 구성 항목)
    전송항목 제공 API (resource)만 표기 scope
    은행 수신계좌
    정보
    • 수신계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 계좌에
    대한 기본정보,
    추가정보 및
    거래내역
    /accounts/deposit/basic bank.deposit
    /accounts/deposit/detail
    /accounts/deposit/transactions
    /accounts/deposit/scheduled
    투자상품
    정보
    • 투자상품계좌 목록에서 전송 요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택시 해당 scope 지정)
    /accounts/invest/basic bank.invest
    /accounts/invest/detail
    /accounts/invest/transactions
    대출상품
    정보
    • 대출계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    /accounts/loan/basic bank.loan
    /accounts/loan/detail
    /accounts/loan/transactions
    신탁/ISA
    상품 정보
    • 신탁/ISA 목로에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    /accounts/isa/basic bank.isa
    /accounts/isa/transactions
    /accounts/isa/detail
    개인형IRP
    정보
    • 개인형IRP 계좌 목록에서 전송요구를 원하는 계좌번호를 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    /irps/basic bank.irp
    /irps/detail
    /irps/transactions
    선불카드
    정보
    • 선불카드 목록에서 전송요구를 원하는 계좌번호를 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    /prepaid/balance bank.prepaid
    /prepaid/transactions
    /prepaid/detail
    DB 정보
    • DB 정보 전송 여/부 선택 ('여' 선택시 해당 scope 지정)
    DB 정보 /db/basic bank.db
    DC
    정보
    • DC 정보 목록에서 전송요구를 원하는 계좌번호를 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 DC형 퇴직연금에
    대한 기본정보,
    추가정보 및
    거래내역
    /dc/basic bank.dc
    /dc/transactions
    /dc/detail
    카드 카드
    정보
    • 카드 목록에서 전송요구를 원하는 카드번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 카드에
    대한 기본정보 및
    승인정보 및 매입정보
    /cards/{card_id} card.card
    /cards/{card_id}/approval-domestic
    /cards/{card_id}/approval-overseas
    /cards/{card_id}/purchase-domestic
    /cards/{card_id}/purchase-overseas
    포인트
    정보
    • 포인트 정보 전송여/부 선택 ('여' 선택 시 해당 scope 지정)
    포인트 정보 cards/point card.point
    청구 및 결제
    정보
    • 청구 및 결제정보 전송 여/부 선택 (‘여’ 선택 시 해당 scope 지정)
    청구 기본정보,
    상세정보 및 결제정보
    /cards/bills card.bill
    /cards/bills/detail
    /cards/payments
    /cards/payments/revolving
    대출상품
    정보
    • 대출상품 정보 전송 여/부 선택 ('여' 선택 시 해당 scope 지정)
    단기대출,
    장기대출 정보
    /loans card.loan
    /loans/short-term
    /loans/long-term
    /loans/long-term/transactions
    금융
    투자
    계좌
    정보
    • 계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 계좌에
    대한 기본정보,
    추가정보 및 거래내역
    /accounts/basic invest.account
    /accounts/transactions
    /accounts/products
    /accounts/pension
    /accounts/scheduled
    개인형IRP
    정보
    • 개인형IRP 계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    /irps/basic invest.irp
    /irps/detail
    /irps/transactions
    DB 정보
    • DB 정보 전송 여/부 선택 ('여' 선택 시 해당 scope 지정)
    DB정보 /db/basic invest.db
    DC 정보
    • DC 정보 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 DC형 퇴직연금에 대한 기본정보, 거래내역 정보, 추가정보 /dc/basic invest.dc
    /dc/transactions
    /dc/detail
    보험 보험정보
    • 보험증권 목록에서 전송요구를 원하는 증권번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 보험증권에 대한 기본정보, 추가정보 및 납입내역 /insurances/basic insu.insurance
    /insurances/contracts
    /insurances/car
    /insurances/payment
    /insurances/transactions
    /insurances/car/transactions
    /insurances/coverages
    /insurances/general/basic
    /insurances/general/contracts
    /insurances/general/payment
    /insurances/general/transactions
    /insurances/general/coverages
    대출상품
    정보
    • 대출계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    대출 기본정보, 추가정보 및 납입내역 /loans/basic insu.loan
    /loans/detail
    /loans/transactions
    개인형IRP
    정보
    • 개인형IRP 계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 계좌에 대한 기본정보,
    추가정보
    /irps/basic insu.irp
    /irps/detail
    /irps/transactions
    피보험자 보험 정보
    • 보험증권 목로에서 전송요구를 원하는 증권번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    /insured/basic insu.insured
    /insured/contracts
    /insured/car
    /insured/coverages
    /insured/general/basic
    /insured/general/contracts
    /insured/general/coverages
    DB 정보
    • DB 정보 전송 여/부 선택 ('여' 선택 시 해당 scope 지정)
    DB 정보 /db/basic insu.db
    DC 정보
    • DC 정보 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 DC형 퇴직연금에 대한 기본정보, 거래내역 정보, 추가정보 /dc/basic insu.dc
    /dc/transactions
    /dc/detail
    전자
    금융
    전자지급수단
    정보
    • 전자지급수단 목록에서 전송 요구를 원하는 전자지급 수단 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    전자지급수단,
    기본정보,
    잔액정보,
    자동충전정보 및 거래내역
    /prepaid/balance efin.prepaid
    /prepaid/charge
    /prepaid/transactions
    결제 정보
    • 계정 목록에서 전송요구를 원하는 계정 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    결제내역,
    결제수단,
    정보
    /paid/methods efin.paid
    /paid/transactions
    할부
    금융
    대출상품
    또는
    운용리스
    정보
    • 대출상품 또는 운용리스 계좌 목록에서 전송요구를 원하는 계좌번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 계좌에
    대한 기본정보,추가정보 및
    거래내역
    /loans/basic capital.loan
    /loans/detail
    /loans/transactions
    /loans/oplease/basic
    /loans/oplease/transactions
    보증
    보험
    보증보험
    정보
    • 보증보험 증권 목록에서 전송 요구를 원하는 증권번호 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 보증보험 증권에 대한 기본정보 및 납입내역 /insurances/basic ginsu.insurance
    /insurances/transactions
    통신 통신
    정보
    • 통신 계약 목록에서 전송요구를 원하는 계약 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 통신 계약에 대한 청구정보, 납부정보 및 결제정보 /telecoms/bills telecom.mgmt
    /telecoms/tranctions
    /telecoms/paid-transactions
    P2P P2P 대출
    정보
    • P2P 대출 목록에서 전송요구를 원하는 계약 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 대출에 대한 청구정보, 납부정보 및 결제정보 /lendings/basic p2p.lending
    /lendings/detail
    /lendings/transactions
    P2P 투자 정보
    • P2P 투자목록에서 전송요구를 원하는 투자계약 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 투자에 대한 기본정보 및 거래내역 /invest p2p.invest
    /invest/basic
    /invest/transactions
    인수채권 인수채권/금전대부 정보
    • 인수채권/금전대부 목록에서 전송요구를 원하는 계약 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 인수채권/금전대부에 대한 잔액정보 및 거래내역 /bonds/detail bond.bond
    /bond/tranctions
    대부 인수채권/금전대부 정보
    • 인수채권/금전대부 목록에서 전송요구를 원하는 계약 선택
    • 복수 개 선택 가능 (하나라도 선택 시 해당 scope 지정)
    선택한 인수채권/금전대부에 대한 잔액정보 및 거래내역 /bonds/detail usury.bond
    /bond/tranctions

    다중 scope : 정보주체가 전송요구할 개인신용정보를 복수 개 선택 시 다중 scope를 지정하여 권한을 설정하며, scope 값 사이를 공백(space)로 구분

    - 중계기과의 경우 정보주체별 및 정보제공자(중계기관 이용기관)별 scope 관리 필요

    다중 scope 예시
    1. 1. 정보주체가 은행A에게 투자상품정보, 개인형IRP정보에 대한 전송요구 시 scope :

      - "bank.list bank.invest bank.irp"
    2. 2. 정보주체가 카드사B에게 카드정보, 포인트정보 및 대출상품정보에 대한 전송요구 시 scope :

      - "card.list card.card card.point card.loan"
    3. 3. 정보주체가 보험사C에게 어떤 정보도 전송요구를 하지 않은 경우 scope :

      - "insu.list"
    4. ※ 정보제공자(또는 중계기관)는 어떤 경우라도 scope에 해당 업권의 "자산목록 scope"(<industry>.list)를 반드시 포함하여 접근토큰을 발급(개별인증-002 API)해주어야 마이데이터사업자가 정보주체의 개인신용정보 전송요구 내역 조회가 가능

    지원 API 호출용/제공용 : 고정값('manage') 사용

    통합인증 API 호출용 : 고정값('ca')사용

4) 접근토큰 유효기간
  1. 정보제공 API 호출용 : 접근토큰의 유효기간은 최장 90일, 리프레시 토큰의 유효기간은 최장 1년으로, 최초 발급된 후 최장 1년 이내에는 정보주체 재동의 없이 리프레시 토큰을 이용하여 접근토큰 갱신이 가능
  2. 지원 API 호출용/제공용, 통합인증 API 호출용 : 접근토큰의 유효기간은 최장 1년이며, 리프레시 토큰은 지원 안 함