0

我目前正在评估不同的 ESB 产品(实际上我现在专注于 mule)。用例是代理一个简单的 HTTP 服务,一个 OpenGIS Web Mapping Service WMS。

这是一个免费发布的 WMS 服务的示例:

  • 它以有关“GetCapablities”请求的服务的 XML 元数据响应 (http://www.wms.nrw.de/wms/uebersicht_nrw2?REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS)
  • 它以包含“GetMap”请​​求的地图的图像数据进行响应(http://www.wms.nrw.de/wms/uebersicht_nrw2?REQUEST=GetMap&VERSION=1.1.1&SERVICE=WMS&LAYERS=Uebersicht&SRS=EPSG:31466&FORMAT=image/png&BBOX =2538900,5656400,2619500,5777000&WIDTH=200&HEIGHT=200&STYLES=&)

两者都将其数据作为字节数组返回,这可能是我正在处理的问题。

在我可以通过 Mule ESB 代理它之后,我想添加如下安全功能:

  • HTTP 基本和摘要式身份验证
  • 通过 TLS 客户端证书进行身份验证
  • 实施 XACML 策略执行点
  • 提供一些关于审计服务的使用统计信息,并在其上实施一些 QoS 和 Throttling。

但基本上代理本身并没有像我想要的那样工作。这是我到目前为止得到的。首先,我尝试使用流代理它以在入站地址上添加安全提供程序。但是请求似乎没有到达出站地址,并且响应是空的。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:pattern="http://www.mulesoft.org/schema/mule/pattern" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mule-ss="http://www.mulesoft.org/schema/mule/spring-security" xmlns:ss="http://www.springframework.org/schema/security" version="CE-3.2.1" xsi:schemaLocation="...cut..."
<mule-ss:security-manager>  
    <mule-ss:delegate-security-provider name="memory-provider" delegate-ref="authenticationManager"/> 
</mule-ss:security-manager>
<spring:beans>
    <ss:authentication-manager alias="authenticationManager">  
        <ss:authentication-provider> 
            <ss:user-service id="userService"> 
                <ss:user name="ross" password="ross" authorities="ROLE_ADMIN"/>  
                <ss:user name="anon" password="anon" authorities="ROLE_ANON"/> 
            </ss:user-service> 
        </ss:authentication-provider> 
    </ss:authentication-manager>
</spring:beans>
<http:connector name="NoSessionConnector">
    <service-overrides sessionHandler="org.mule.session.NullSessionHandler" />
</http:connector>
<flow name="wfsFlow1" doc:name="wfsFlow1" processingStrategy="synchronous">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="wms" responseTimeout="10000000" doc:name="Geoserver OWS">
        <mule-ss:http-security-filter realm="mule-realm"/>
    </http:inbound-endpoint>
    <http:outbound-endpoint exchange-pattern="request-response" method="GET" address="http://www.wms.nrw.de/wms#[header:INBOUND:http.request]" encoding="UTF-8" disableTransportTransformer="true" responseTimeout="1000000" doc:name="Geoserver OWS"/>
</flow>
</mule>

我认为问题在于 WMS 服务作为字节数组的响应。我尝试了不同的响应转换器来从字节数组转换为字符串或 html 响应,但它不起作用。

我也尝试了桥接模式,但它没有像我预期的那样通过 GET 操作提供参数,而是通过 POST 提供参数,底层 WMS 服务不接受这种方式。

我认为我的用例非常简单,但我从四个星期开始就尝试实施它。我完成了这些供应商提供的每个示例教程,但我无法使用任何类型的身份验证设置简单的 HTTP 参数服务。

有没有人对这些产品有任何经验,或者很高兴回答我一些关于如何在任何这些产品上设置具有身份验证的 HTTP 代理的具体问题。

非常感谢!

4

2 回答 2

2

大卫,你的要求很长。让我澄清关于 WSO2 ESB 的一些要点,以便您开始。

  1. WSO2 ESB 不仅支持 SOAP,还支持多种传输和内容类型。您可能对 REST 和 JSON 支持最感兴趣。此处此处的链接可能会有所帮助。

  2. 所有 WSO2 服务器都可以插入外部目录服务。单击此处获取说明

  3. 可以满足您的所有要求。您可以浏览此位置的综合示例,以了解 ESB 的功能。让我也向您指出此处此处此处此处此处的文章,这些文章将帮助您满足您的要求。

希望这可以帮助。

于 2012-05-16T18:41:08.333 回答
0

Mule 在对人员进行身份验证和授权时依赖于 Spring Security。

配置安全性是在 Mule 中处理安全性的文档入口点。您将在那里找到有关配置 Spring Security、保护组件(如 HTTP 桥)和 LDAP 身份验证的信息。

默认情况下,Mule 在执行出站请求时会将其会话序列化为 HTTP 标头。如果远程站点不受信任,这不仅可能是一个安全问题,而且还可能导致错误请求问题,因为序列化会话产生的 HTTP 标头太大。

知道当存在安全上下文时,Mule 会话变得非常大,这可能会导致问题。事实上,使用您的配置,我从远程测试站点收到了错误的请求错误!所以我添加了以下内容以确保 Mule 不会通过 HTTP 发送请求:

<http:connector name="NoSessionConnector">
    <service-overrides sessionHandler="org.mule.session.NullSessionHandler" />
</http:connector>

我也disableTransportTransformer="true"从您的配置中删除了,因为这也可能导致问题。

于 2012-05-14T16:14:22.583 回答