토큰발급 및 활용절차

ScienceON API Gateway에서는 인증토큰(Access Token)을 발급받아야 API를 활용할 수 있습니다.
발급된 인증토큰을 이용해 데이터를 요청하고 이용할 수 있으며, 토큰 사용기간이 만료시에는 재발급을 받아 사용하실 수 있습니다.

1. 인증(토큰 발급)

1.token 발급 요청
  • Token 발급 요청 예시

    https://apigateway.kisti.re.kr/tokenrequest.do?accounts=
    AES256 {
        mac_address : 40-8D-5C-7D-DF-4E,
        datetime: 20200929182955
    }
    &client_id=KxVwdBN7OVtnbS3F0s7S1MD

    https://apigateway.kisti.re.kr/tokenrequest.do?accounts= tG26p5Im22Z6RxbB2n7mwxLtpWeZuPhHqcV4eZH0NN6G4407t0CblLa9xzYKQplOpKDr2eal41HJHSeT0ChRzQ= =&client_id=KxVwdBN7OVtnbS3F0s7S1MD
2.신청기관 정보 확인
  • client_id 값으로 신청기관 식별 후 인증에 필요한 mac address, ip 주소리스트, 인증키 값을 가져옴
  • 신청기관의 인증키를 암호화 키로 accounts의 값에 대해서 복호화 진행함
  • json data에서 mac_address 값을 가져온 후 비교해서 일치 여부 확인함
  • 요청 서버IP 주소 확인 후 신청기관 IP 주소 여부 확인함
  • 일치 하면 token 발급을 위한 인증 통과 됨, token 발급함

* accounts 정보 생성 – 신청기관 식별을 위한 정보

  • Client(신청기관) 에서 이용신청 시 제출한 인증요청정보 mac address, ip 발급받은 인증키를 이용
  • mac address, 현재일시 값을 json data로 변환
  • json data를 발급받은 인증키로 AES256 암호화 실행
  • 암호화 결과값을 accounts parameter로 API Gateway 서버로 전달함
3.Access Token, Refresh Token 생성
  • 신청기관 정보 확인 후 32Byte token 2개 발행
  • 한 개는 Access Token용(사용기한:2시간)
  • 한 개는 Refresh Token용(사용기한:2주)
4.Access Token, Refresh Token 발급 (json data)
  • 예제

    {
        "access_token": "HVBVuQgjIRUGHE5CBOiKRGC",

        "access_token_expire": "2020-10-08T19:15:21.981",

        "refresh_token": "euIChI80BQWWCJEiwTHWCrG",

        "refresh_token_expire": "2020-10-22T19:15:21.981",

        "client_id": "KxVwdBN7OVtnbS3F0s7S1MD",

        "issued_at": "2020-10-08T17:15:22.083"
    }
  • access_token : access_token 값
  • access_token_expire : access_token 만료일시 (발행일시로 부터 2시간)
  • refresh_token : refresh_token 값
  • refresh_token_expire : efresh_token 만료일시 (발행일시로 부터 2주)
  • client_id : token 요청한 신청기관 식별ID
  • issued_at : token 발행일시

위의 token 발행정보를 API Gateway DB내에 저장 관리함

2. 데이터 요청

5.데이터 요청(Access Token 이용)
  • https://apigateway.kisti.re.kr/openapicall.do?&client_id=KxVwdBN7OVtnbS3F0s7S1MD&token={발급받은 Access_Token}&version=1.0&action=search&target=ARTI&searchQuery={"BI":"자동차"}&sortField=&sortBy=&curPage=1&rowCount=10
6.Access Token 검증
  • 넘겨받은 client_id, token값을 API Gateway DB의 신청기관 발급 토큰 정보(AG_REQUESTER_TOKEN)에 저장되어 있는 token값과 만료일시를 체크
  • Access_token값은 일치, 만료일시 이내 이면 데이터 가져오기 단계로 넘어감
7.응답( 요청데이터 XML Return)
  • 검색된 결과 데이터를 정해진 스키마에 따라 XML형태로 변환하여 Client에게 넘겨줌

3. 토큰 재발급

9.데이터 요청(Access Token 이용)
  • https://apigateway.kisti.re.kr/openapicall.do?&client_id=KxVwdBN7OVtnbS3F0s7S1MD&token={발급받은 Access_Token} &version=1.0&action=search&target=ARTI&searchQuery={"BI":"자동차"}&sortField=&sortBy=&curPage=1&rowCount=10
10.Access Token 만료 확인, 11. 응답( Access Token 만료 신호)
  • 넘겨받은 client_id, token값을 API Gateway DB의 신청기관 발급 토큰 정보(AG_REQUESTER_TOKEN)에 저장되어 있는 token값과 만료일시를 체크
  • 요청일시가 acdess_token 만료일시를 넘어가면 Client에게 Access Token 만료 에러메시지 XML 리턴
12.Access Token 발급요청
  • https://apigateway.kisti.re.kr/tokenrequest.do?refresh_token={발급받은 Refresh Token}&client_id=KxVwdBN7OVtnbS3F0s7S1MD
13.Refresh Token 확인 후 새로운 Access Token 발급
  • 넘겨받은 client_id, refresh_token값을 API Gateway DB의 신청기관 발급 토큰 정보(AG_REQUESTER_TOKEN)에 저장되어 있는 refresh_token값과 만료일시를 체크
  • refrsh_token값은 일치, 만료일시 이내 이면 신규 Access Token 발급
  • 신규 Access Token 발급정보 및 만료일시 신청기관 발급 토큰 정보(AG_REQUESTER_TOKEN)에 저장