마이데이터 테스트베드?

마이데이터 전체 흐름도 v1.2.pptx 기준


  • 정보제공자 개별인증-001 API


  1. Flow 로직 검증
    • redirect uri 검증 테스트 필요 ( Strategies 인덱스 저장 된 정보를 Search 해서 비교 검증 ( client_id 값이 같은 값이어도 score 값이 1이 안됨, 입력 받은 Request Parameter client_id값도 검증 해야 하는지 ) )
    • client_id 값을 다르게 넣었을 때 302로 ResponseCode가 세팅 되는 현상 발생, 확인 필요
    • client_id 값 검증 부분을 추가해야 하는지 확인 필요

    • 202106v 추가 된 validation
      • 1. Client Id 검증
      • 2. Redirect URI 검증
        response를 json으로

  1. Output Setting 부분 (Error 포함)
    • https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1 rfc6749 표준 규격에 맞는 Error Message 설정 필요
    • Error 목록 정리
      • invalid_request : 필수 파라미터 값이 없을 때 에러
      • unauthorized_client : 클라이언트가 인증되지 않았을 때? (Client_id 값 검증인지?)
      • access_denied : ResourceOwner 또는 AS가 request를 Deny 했을 때
      • unsupported_response_type : authorization code 방식이 아닐 때 (response_type 이) , 또는 지원하지 않는 response_type 일 때
      • invalid_scope : scope invalid
      • server_error : AS 가 정상적인 상태가 아닐 때
      • temporarily_unavailable : 일시적 unavaliable 상태 , temporary overloading 이거나 maintanance of the server (503 Code response code)
      • Values for the "error" parameter MUST NOT include characters outside the set %x20-21 / %x23-5B / %x5D-7E.



  1. Header 부분
    • x-user-ci (정보 주체 식별 값), x-api-tran-id(거래 고유 번호) 세팅 필요
    • Transformation 설정으로 Header 값을 Query로 변환하여 Service에서 처리 가능, 사용 가능한지 테스트
    • 마이데이터 사업자 측에서 CI 값을 이용하여 mapping index 에 저장 해야 하기 때문에 ci 값을 Response로 받아 처리 가능하도록 구현
    • authorize 서비스로 제공되는 /{install directory}/IntegrationServer/instances/default/packages/WmAPIGateway/templates OAuth_approval.html 과 같은 인증 페이지를(웹/앱) 어떻게 제공할 것인지, 동의 내역 승인 후 프로세스 처리 필요
      • 1) secure.apigateway.oauth2:approve 서비스의 approved = true / scopeSelect = 인증 서버 Scope / selectAll = yes / approve = Approve 파라미터를 legacy 인증서버에서 받아서 처리해야 하는지
      • 2) approve 서비스를 실행 시키고 이후 인증 서버에서 처리를 해야 하는지.. 잘 모르겠음



  • 마이데이터 사업자 측 Callback process


  1. Flow 로직 검증
    • State값 검증 구현 필요
    • 인가코드 반환 Flow 에서 개별인증-001의 CI (x-user-ci) 헤더 값을 받아오도록 설정 후 다시 테스트
    • CI 값이 잘못 되었을 때 검증 해야 하는지
    • AUTH-002 api 요청 후 결과 값으로 받은 JWT를 Mapping index ( id = CI )에 저장
    • 접근토큰 발급 후 사업자 쪽 토큰 발급 Response로 JWT 만 발급 받음
(마이데이터 사업자 측 Mapping index)


  1. Output Setting 부분
    • 인증정보 검증 , 동의내역 저장을 건너 뛴 개별인증-001을 실행 시켰을 때, 개별인증-002 Response Content-type 이 application/x-www-urlencoded 방식으로만 나옴, application/json 방식으로 결과 값을 받도록 수정
    • rfc6749 표준 규격에 맞는 Error Message 설정 필요


  • 정보제공자 개별인증-002 API


  1. Flow 로직 검증
    • Code값 검증 Flow 구현 필요 (?) , Code 값 없이도 AccessToken 용 JWT와 RefreshToken JWT 는 생성되어 mapping index에 저장되기 때문에 pub.apigateway.oauth2/getAccessToken(#1. getAccessToken) 을 먼저 수행한 후 Error 처리한 후 JWT 발급 하면 되는지 테스트 해볼 필요


  1. JWT 발급 (IETF RFC 7515 - JSON Web Signature(JWS))
    • JWT Signature , JWS 생성 구현 필요

    • Payload 값들을 고정 값으로 발급하는 테스트를 진행하였기에 (iss, aud, jti, exp, scope) 이후 수정 필요

  1. Header 부분
    • x-api-tran-id 설정 필요
    • Mapping index에 id 값으로 CI 값을 쓰는 것으로 테스트 진행 하였기에 , CI 값을 개별인증-001로 부터 어떻게 값을 넘겨 받을지 필요 (규격에는 header로 ci 값이 설정 되어 있지 않음)
(정보제공자 측 Mapping Index)

  1. Output Setting 부분
    • rfc6749 표준 규격에 맞는 Error Message 설정 필요
      • invalid_request : missing parameter (required)
      • unauthorized_client : client id validation
      • access_denied : resource owner & authorization server denied request
      • unsupported_response_type : AS not support response_type
      • invalid_scope : scope invalid
      • server_error : authorization server condition error
      • temporarily_unavailable : authorization server temporary error



  • 정보제공자 개별인증-003 API


  1. Header 부분
    • x-api-tran-id 헤더 설정 필요
    • ci 값으로 Mapping Table search 테스트 진행, 입력 받은 client_id값과 client_secret 값도 Mapping index에 저장하여 해당 값으로 search 해야 하는지 (?)

  1. JWT 발급 부분
    • 개별인증-002와 동일

  1. client_id, client_secret 검증
    • client_id, secret 값이 달라도 CI값과 refresh_token 값만 같으면 AccessToken 이 refresh 되기 때문에 수정 필요

  1. Mapping index 수정 부분
    • refreshToken으로 AccessToken을 refresh 하면 기존 AccessToken이 삭제되어야 함, (gateway_default_oauth2materializedtoken) default 인덱스에서는 getToken 서비스로 삭제 되지만 Mapping 테이블에서는 삭제되는 Flow가 없음으로 추가 구현 필요

  1. Output Setting 부분
    • rfc6749 표준 규격에 맞는 Error Message 설정 필요
    • getAccessToken 과 동일한 (?)
    • ErrorResponse .....?
    • refresh_token 값이 제대로 들어가지 않아도 400error 발생 후 access_token으로 JWT Response Setting 되어 있음, 추후 로직 수정 필요



  • 정보제공자 개별인증-004 API


  1. Flow 로직 검증
    • 요청으로 받은 token(JWT) 값으로 mapping index Search ( ci 값으로 검색 ) -> token(JWT) 값을 폐기할 토큰인 mapping index에 저장되어 있는 OAuth AccessToken(OAuth) 값으로 swap -> 해당 token(OAuth) 를 이용하여 default index(gateway_default_oauth2materializedtoken) 에서 Search -> 해당 accessToken이 search 후 accessToken값이 없을 때, client_id값이 다를 때 check 후 폐기 (여러 방식으로 테스트 필요)
    • token_hint_type이 refresh_token 일 때 refresh_token 을 폐기 하는건지..(?) 테스트 후 구현 필요
      • hint 값이 없어도 refresh_token과 access_token 구분해서 토큰을 검색하려면 로직 수정 필요

  1. Output Setting 부분
    • rfc6749 표준 규격에 맞는 Error Message 설정 필요
    • 위와 동일