2012-05-13 12 views
0

現在、さまざまなESB製品を評価しています(実際にはまだミュールに実装されています)。ユースケースは、OpenGIS WebマッピングサービスWMSである単純なHTTPサービスをプロキシすることです。ここで異なるESB製品で保護されたHTTPプロキシ

は自由に出版されWMSサービスの一例です:

  • それは「GetCapablities」リクエスト(http://www.wms.nrw.de/wms/のサービスについてのXMLメタデータで応答します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:31おそらくかもしれ466 & FORMAT =画像/ PNG & BBOX = 2538900,5656400,2619500,5777000 & WIDTH = 200 & HEIGHT = 200 & STYLES = &)

両方がバイト配列としてそのデータを返します。問題は私が対処している。

私はミュールESBによるプロキシ、それをすることができた後、私は次のようにセキュリティ機能を追加したい:

  • HTTP BasicおよびDigest認証
  • 認証XACMLポリシー実行ポイントを実装するTLSクライアント証明書
  • 経由
  • 監査サービスよりいくつかの使用統計情報を提供し、いくつかのQoSと調整を実装します。

しかし、基本的にプロキシ自体は私が望むように動作していません。ここに私がこれまでに得たものがあります。最初に、フローでプロキシを試行して、インバウンド・アドレスにセキュリティ・プロバイダを追加しようとしました。要求はアウトバウンド・アドレスに到達していないようで、応答は空です。

<?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サービスからのバイト配列としての応答だと思います。私は別のrepsonseトランスフォーマーをバイト配列から文字列またはhtml応答に変換しようとしましたが、うまくいきませんでした。

ブリッジパターンも試しましたが、期待通りにGET操作でパラメータを提供していませんでしたが、基盤となるWMSサービスでは受け付けられません。

私のユースケースはかなり単純だと思いますが、今は4週間から実装しようとしています。これらのベンダーが提供するすべてのサンプルチュートリアルを実行しましたが、あらゆる種類の認証で簡単なHTTPパラメータサービスを設定することはできませんでした。

これらの製品に関する経験をお持ちの方や、これらの製品の認証でHTTPプロキシを設定する方法に関するいくつかの具体的な質問にお答えしていますか?

多くの感謝!

答えて

0

Muleは、人々を認証して権限を与えるときに、Spring Securityに依存しています。

Configuring Securityは、Muleのセキュリティを扱うためのドキュメントエントリポイントです。 Spring Securityの設定、(HTTPブリッジのような)コンポーネントとLDAP認証の確保に関する情報があります。

デフォルトでは、Muleは、アウトバウンド要求を実行するときに、そのセッションをHTTPヘッダーにシリアル化します。これは、リモートサイトが信頼されていない場合はセキュリティ上の問題になるだけでなく、シリアライズされたセッションではHTTPヘッダーが大きすぎるため、Bad Requestの問題につながる可能性があります。

セキュリティコンテキストが存在すると、Muleセッションがかなり大きくなって問題が発生する可能性があることを認識しています。実際、あなたの設定を使って、私はリモートテストサイトから間違ったリクエストエラーを受け取りました!これはあまりにも問題を引き起こす可能性があるので

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

はまた、私はあなたの設定からdisableTransportTransformer="true"を削除:だから私はミュールがHTTP経由でその要求を送信しないことを確認するために、以下を追加しました。

+0

ありがとうございました。私のプロジェクトにミュール領域を追加し、それを介して認証することができました。残念なことに、HTTPブリッジは認証後にそれ以上応答しません(認証ヘッダーがメッセージに追加されたときにこれがなぜ発生するのかわかりません)。 URLパラメータで構成されたHTTPメッセージを明示的にプロキシするための例がありますか? –

+0

あなたの設定とテストリクエストを表示し、さらに調査してください。 –

+0

こんにちはDave!私は元の質問を更新しました。 Spring Securityの設定は問題がありませんし、魅力的ですが、プロキシを試してみるという特別なWMSサービスの操作に問題があります。あなたが私の要求を達成するために、フロー(Flow)またはペタン(pettern)のいずれかを使用することに関する助言を私に与えることができれば、私は非常に感謝しています。 –

2

ダビデ、あなたの要件は長いです。 WSO2 ESBのいくつかの点を明確にして、始めてみましょう。

  1. WSO2 ESBは、SOAPだけでなく、さまざまなトランスポートとコンテンツタイプをサポートしています。あなたは、おそらくJSONサポートとRESTに興味があるかもしれません。 herehereのリンクが役立ちます。

  2. すべてのWSO2サーバーは、外部のディレクトリサービスに接続できます。 Click here for instructions

  3. すべての要件をカバーすることができます。 this locationの包括的なサンプルを見て、ESBが何をすることができるかを知ることができます。あなたの要求に役立つherehereherehereおよびhereの記事を指摘してください。

希望します。

+0

こんにちは!これらのすべての指示に感謝します。当時、私はミュールに焦点を当てていますが、後でwso2で試してみます。 –

+0

こんにちは、マシュー!私がこれを理解しているように、WSO2は(Apache Synapse Mediator上で)仲介のためにSOAPとWS- *標準を内部的に使用しています。また、RESTful(URLエンコードされたリクエスト?)受信エンドポイントを定義することもでき、内部処理のためにメッセージをSOAPに変換します。しかし、これは、上記のWMSサービスのように、プレーンXMLやイメージデータを提供する単純なWebページをプロキシすることも可能ですか?クライアントのためにESBを完全に透明にして、エンドポイントにHTTP認証を追加するだけです。 –

+0

ESBはSOAPまたはWS- *標準にのみ限定されるものではありません。それは、JMS、SMTP、そして異なるコンテンツタイプのような異なるプロトコルをサポートすることができます。私はそれをSOAP、XML、JSON、またはその他のものにします。モジュラーアーキテクチャに基づいています。私はそれに深く関わっていませんが、詳細に興味があるなら、トランスポート受信者/送信者とメッセージビルダー/フォーマッターを調べます。 URLエンコードされたリクエストだけでなく、完全なRESTfulインターフェイスを開発することができます。あなたが私が指摘した記事のいくつかを読むことができたらと思っています。 –

関連する問題