1

mule で cxf を使用してプロキシ サービスを作成しました。私のミュールのバージョンは 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 をどこで定義すればよいかわかりません。

4

3 に答える 3

3

そのアプローチは有効です。再利用性と読みやすさのために、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" />
于 2013-01-30T13:28:12.650 に答える
0

Mule EE ユーザ向けに、MuleSoft はIP フィルタを含むエンタープライズ セキュリティ モジュールを提供するようになりました。

于 2013-01-30T15:25:08.873 に答える
0

IP アドレスに基づいてサービスを制限することは、スケーラブルなアプローチではないようです。

より多くのクライアントが入ってくる場合、または 1 つのクライアントの場合でも、リクエストはさまざまな環境 (prod、test、dev) から送信される可能性があり、異なる IP を持つことになります。

クライアントはマシンを変更することもでき、IP は同じままではありません。クライアント エンドでの変更が影響するようなシステムを設計したくない場合は、より多くのクライアントに対応できるようにソリューションを拡張する必要があります。

1 つの解決策は、 を探すことですSecuring your web service。このブログ投稿では、それについて説明しています。http://blogs.mulesoft.org/securing-soap-web-services-using-ws-security/

Mule を使用して Web サービス セキュリティを Google で検索すると、より多くの結果が得られます。

于 2013-01-30T14:18:47.807 に答える