Loading...
Loading...
플러그인은 서비스 API 스키마의 포맷과 기능을 확장하는데 쓰입니다. 플러그인은 위임된 스키마에 대한 검증, 해석, 작동 방식을 정의하고 구현합니다.
각 프로토콜 플러그인은 해당 프로토콜 스키마의 양식을 정의하고, 스키마 병합, 요청 프록시, 의존성 파악, 서버 확장 핸들러 등을 구현합니다.
각 접근 제어 플러그인은 해당 접근 제어 스키마의 양식을 정의하고, call
, publish
, subscribe
커넥터의 정책을 해석하고 접근 제어를 판단하는 핸들러를 구현합니다.
REST 프로토콜은 분산 서비스에 대한 call
, publish
커넥터를 특정 엔드포인트에 맵핑합니다. HTTP 요청의 Paylo,ad는 미들웨어를 통해 파싱되어 params
커넥터를 통해 변환되어 call
, publish
커넥터로 전달됩니다.
엔드포인트가 중복되는 경우 병합을 발생시킨 출처 노드로 디버그 메세지가 report
되며 병합에 실패합니다.
API Catalog를 통해서 엔드포인트 별 적용된 정책 및 커넥터와 그 파라미터에 대한 설명을 제공합니다.
TODO: $headers, $status, $body field for REST response
GraphQL 프로토콜은 분산 서비스에 대한 call
및 publish
, subscribe
커넥터를 특정 타입의 필드에 맵핑합니다. HTTP 요청의 Payload는 미들웨어를 통해 파싱되어 params
커넥터를 통해 변환되어 call
, publish
, subscribe
, map
커넥터로 전달됩니다.
GraphQL 스키마 생성에 실패하는 경우 병합을 발생시킨 출처 노드로 디버그 메세지가 report
되며 병합에 실패합니다.
API Catalog를 통해서 각 GraphQL Type 별 적용된 정책 및 커넥터와 그 파라미터에 대한 설명을 제공합니다.
서비스 API 스키마를 통해서 GraphQL Custom Scalar 정의를 추가 할 수 없습니다. Gateway 생성시 플러그인 옵션을 통해 Scalar 정의를 추가하거나 오버라이드 할 수 있습니다. 기본적으로 DateTime
, Date
, Time
, JSON
가 포함되어있습니다.
TODO: WIP
프로토콜의 확장성과 접근제어 정책의 정합성을 위해서, 접근 제어 정책은 프로토콜별 엔드포인트가 아니라 액션과 이벤트를 주체로 적용됩니다.
접근 제어 정책의 평가는 API Gateway의 메모리에 LRU 방식으로 캐시되며 한 요청에서 중복 수행되지 않습니다. 캐시 키를 생성 할 때 요청을 정확히 구분하기 위해서 컨텍스트(인증 정보) 및 호출 페이로드 등의 정보가 반영됩니다.
적용되는 플러그인의 순서는 유효합니다. 우선하는 플러그인에서 실패 할 경우 다음 플러그인의 정책은 평가되지 않습니다. 접근 제어 플러그인의 기본 옵션에서 OAuth2 Scope 플러그인(scopes
)이 FBAC 플러그인(filter
)보다 우선합니다.
OAuth2 Scope 플러그인은 각 정책의 scopes
에 나열된 스코프를 context.scopes
가 하나 이상의 스코프를 포함하는 경우 접근을 허용합니다.
FBAC 플러그인은 각 정책의 filter
항목에 맵핑된 Inline JavaScript Function String을 VM에서 실행하고 그 Boolean
값으로 접근 제어 여부를 판단합니다. 평가중 에러가 발생하거나 Boolean
값이 리턴되지 않는 경우, API Gateway에서 출처 노드로 전달되며 접근이 거부됩니다.
디버깅 중에 Inline JavaScript Function String에서 console
객체를 사용해 메세지를 출력하는 경우, 그 메세지는 console
객체에 바인딩된 report
커넥터가 출처 노드로 전달합니다.
Loading...
Loading...