繁体   English   中英

使用groovy表达式来处理mule中的有限IP

[英]Use groovy expression for limited IP in mule

我用mule中的cxf创建了一个代理服务。 我的mule版本是3.3.0 CE。 现在,我想对使用代理服务创建的wsdl进行限制。 我的限制不应该允许每个IP他们看到我的wsdl。 为此,我发现Groovy表达式和下面的代码:

<expression-filter
        expression="#[groovy:'${allowed}'.contains(message.getInboundProperty('MULE_REMOTE_CLIENT_ADDRESS').substring(message.getInboundProperty('MULE_REMOTE_CLIENT_ADDRESS').indexOf('/')+1, message.getInboundProperty('MULE_REMOTE_CLIENT_ADDRESS').indexOf(':')))]"
        doc:name="Expression" />

我不知道是好代码还是不? 而且我不知道我应该在哪里定义我的有效Ip?

这种方法是有效的。 只建议我要做的是将IP解析提取到全局函数以获得可重用性和更好的可读性:

<configuration>
    <expression-language>
        <global-functions>
            def parseIp(fullIp) {
                return fullIp.substring(fullIp.indexOf('/') + 1, fullIp.indexOf(':'))
            }
        </global-functions>
    </expression-language>
</configuration>    

然后你可以使用它如下:

<expression-filter expression="#['${allowed}'.contains(parseIp(message.inboundProperties['MULE_REMOTE_CLIENT_ADDRESS']))]"
        doc:name="Expression" />

基于IP地址限制服务看起来并不是一种可扩展的方法。

如果您有更多客户进入或甚至可能为1个客户端,请求可以从不同的环境(prod,test,dev)发送,那么您将拥有不同的IP。

客户也可以更改他们的机器,IP不会保持不变。 您不希望设计一个系统,客户端上的更改会影响您,并且您的解决方案应该具有足够的可扩展性以容纳更多客户端。

一种解决方案是寻找Securing your web service 这篇博文讲述了它。 http://blogs.mulesoft.org/securing-soap-web-services-using-ws-security/

使用Mule谷歌搜索Web服务安全性将提供更多结果。

对于Mule EE用户,MuleSoft现在提供包含IP过滤器的企业安全模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM