Client Credentials Type의 OAuth 토큰 발급 API 구현

  • API 명세서






1. 서비스 구현

  • 패키지 구성

  • Client_Credential
    • docs
      • ERROR : 에러 호출 시 JSON 변환 전 Response
      • RESPONSE : 성공 호출 시 JSON 변환 전 Response
    • srvc
      • token : 메인 서비스

  • OAuth 토큰 발급 서비스 ( token )

>> pub.client:http (HTTPS 호출 ( getToken 호출)) [메인 서비스]

url : https://192.168.1.143:3355/invoke/pub.oauth:getToken?grant_type=%grant_type%&scope=%scope%
method : post

Content-type : application/json
Authtorization : oauthheader (Request Header [ API 명세서 Authorization 헤더 값] )

trustStore : GW 서버에 등록한 Truststore Alias 명
useJSSE : YES


  • 헤더 스왑을 위한 Set Header 서비스 ( swapHeader )







2. API Gateway 설정


  • API 정책 설정

  1. Transport : HTTPS 호출 ( Extended Settings : pg_oauth2_isHTTPS = false 해도 안됨 )


  1. Request Processing : IS service 호출 / Header Transformation

빈 값 헤더를 추가하는 서비스 ("oauthheader" 헤더 추가)


oauthheader <-> authorization 헤더 swap
authorization = Basic QWRtaW5pc3RyYXRvcjptYW5hZ2U= ( Basic + BASE64Encode(Administrator + ":" + manage) )



  • Keystores / Truststores 등록


  • Port 등록 (HTTPS 호출 용)


  • OAuth Scope 설정



  • Scope Mapping 설정
=> 토큰만 발급되면 되는 것인지? / 해당 토큰으로 GW에서 인증처리가 필요한것인지 확인 필요
=> 인증 처리가 필요 할 시 , API Scope 변경 필요 (인증처리가 필요한 API 대상으로 Scope 변경)

  • Application 설정







3. API 호출 테스트


Authorization
Username : Client Id 값
Password : Client Secret 값
=> Postman에서 자동으로 Authorization 헤더 등록 Basic + BASE64encode ( client_id + ":" + client_secret )