簡體   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