[英]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.