배경 :WSO2 ESB는 들어오는 REST API 요청을 중재하기위한 HTTP (S) 프록시 역할을 할 수 있습니까?
나는 기업 내에서 또는 인터넷에서 어느 위치 기반 REST API를 백엔드 제공 업체에 인증 된 액세스를 제공하는 기업 환경 내에서 WSO2 ESB를 사용하는 것을 시도하고있다.
내 목표는 선택적으로 액세스 권한을 부여하는 것입니다. API 공급자 P1을 REST 클라이언트 C1에만, REST API 공급자 P2에 대해서는 REST 클라이언트 C2에만 REST 할 수 있습니다. http://wso2.com/library/articles/2012/10/implementing-restful-services-wso2-esb/에 설명 된대로 "< API를 >"로 WSO2 ESB를 사용
복잡한 API를 (예 : VM웨어 vcloud 감독 REST API를 https://www.vmware.com/support/vcd/doc/rest-api-doc-1.5-html/landing-user_operations.html)
에 대한 경향이 매우 큰 오류가 될 수있는 모든 자원을 재정의 부과하는 것 WS02 ESB "< 프록시 >"을 사용하여 설명 된대로 https://docs.wso2.org/display/ESB481/Using+REST+with+a+Proxy+Service#UsingRESTwithaProxyService-RESTClientandRESTService ("REST 클라이언트 및 REST 서비스")는 HTTP 클라이언트에 노출 된 URI가 수정 된 wrt 원래 백업 된 URI로. 일반적인 프록시 URI는 서비스 접두어 및 특정 포트가있는 다음 형식으로 구성됩니다. http : // : 8280/services/CustomerServiceProxy/customers/123
클라이언트를 제어 할 수있을 때 자체 사용자 정의 REST API). REST API가 산업 표준이고 클라이언트가 SDK이거나 WSO2 사용자 (예 : AWS S3 API 또는 VM웨어 vcloud 디렉터 REST API)의 제어 밖에있는 상용 응용 프로그램 인 경우 문제가됩니다.
또한 일부 사용자 지정 클라이언트/SDK는 SDK/클라이언트에 포함 된 공개 키에 대해 서버 쪽 SSL 인증서를 확인할 수 있습니다.
HTTP REST API를 그대로 유지하고 HTTP REST API를 통해 HTTP 프록시 (예 : HTTP 프록시 인증을 통해 클라이언트 인증 가능)를 통해 API를 노출하는 일반적인 해결책은 클라이언트가 이전에 CONNECT 요청을 전송하는 것입니다 원래 요청을 보냅니다. 이렇게하면 전체 URI와 SSL 인증서가 보존됩니다.
질문 :
WSO2 ESB는 원래의 URI 및 서버 SSL 인증서를 보존, 수신 REST API 요청을 중재하는 HTTP (S) 프록시의 역할을 가질 수있는 방법이 있나요?
나는 새로운 "< http-proxy >"구문에 대해 생각하고 있지만 아직 발견하지 못했습니다. 나는. http : // : 3128 /을 청취하고 CONNECT 요청에 응답합니다. 조정은 CONNECT 요청 입력 (프록시 인증, 요청 된 호스트) W 기타 http 전송 헤더에 따라 CONNECT를 승인할지 여부를 결정합니다. CONNECT 요청이 승인되면 후속 개별 개인 요청에 대해 대응할 수도 있습니다.
CONNECT 동작을 설명하는 최적의 사양은 http://tools.ietf.org/html/draft-luotonen-web-proxy-tunneling-01 (채택 된 것으로 보이는 1999 초안)과 http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-22#page-29 제안 표준을 나타냅니다.
HTTPS URI의 경우 WSO2 중재에 제한적인 기능이있을 수 있습니다. 요청에 SNI (Server Name Indication)가 지정되어 있으면 HTTP 요청이 SSL 암호화되고 도메인 만 알 수 있습니다. 최소한 이것은 프록시 인증에 따라 클라이언트 집합에 일부 호스트 이름을 부여/거부 할 수 있습니다.