首页 文章

WSO2 ESB可以扮演HTTP(S)代理角色来调解传入的REST API请求吗?

提问于
浏览
0

Background:

我正在尝试在公司设置中使用WSO2 ESB来提供对位于企业内部或Internet上的底层REST API后端提供程序的身份验证访问 .
我的目标是有选择地授予访问权限,例如REST API提供程序P1仅对REST客户端C1和REST API提供程序P2仅对REST客户端C2 . 使用WSO2 ESB和http://wso2.com/library/articles/2012/10/implementing-restful-services-wso2-esb/中描述的“<api>”似乎强制重新定义每个资源,这可能是非常大且容易出错的复杂API(例如vmware vcloud director REST API https://www.vmware.com/support/vcd/doc/rest-api-doc-1.5-html/landing-user_operations.html)使用WSO2 ESB“<proxy>”,如https://docs.wso2.org/display/ESB481/使用代理服务的REST所述#UsingRESTwithaProxyService-RESTClientandRESTService(“REST客户端和REST服务”)强制将URI暴露给HTTP客户端将被修改为wrt到原来支持的uri . 典型的代理URI将具有以下形式,其中包含服务前缀和特定端口http://:8280 / services / CustomerServiceProxy / customers / 123虽然可以控制客户端(通常是内部自定义),但修改了公开的URI是正常的REST API) . 当REST API是行业标准并且客户端是SDK或者是在WSO2用户控制范围之外的现成应用程序(例如AWS S3 API或vmware vcloud director REST API)时,这是有问题的 . 此外,一些自定义客户端/ SDK可以针对嵌入到SDK /客户端中的公钥验证服务器端SSL证书 .
按原样保留HTTP REST API并在其上添加一些身份验证的常用解决方案是通过HTTP代理公开API(可能通过HTTP代理身份验证对客户端进行身份验证),即客户端在发送原始数据之前发送CONNECT请求请求 . 这样可以保留完整的URI以及SSL证书 .

Question:

有没有办法让WSO2 ESB扮演HTTP(S)代理角色来调解传入的REST API请求,保留原始URI和服务器SSL证书?

我正在考虑一种新的“<http-proxy>”语法,我还没有发现 . 即它会监听http://:3128 /并响应CONNECT请求 . 然后,中介将能够接受或不接受CONNECT,具体取决于CONNECT请求输入(代理身份验证,请求的主机)和其他http传输头 . 一旦授予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中介内的功能可能有限:HTTP请求是SSL加密的,如果在请求中指定了SNI(服务器名称指示),则只能知道域 . 至少这将允许根据代理身份验证向一组客户端授予/拒绝某些主机名 .

1 回答

相关问题