Tomcat 上の rampart 1.4 を Eclipse から動かしてみるテスト。
平文のユーザ名とパスワードを含む SOAP メッセージを、HTTPS で保護してみたい。Ant
から動かすサンプルがあるけど、敢えてEclipse で動かす事にした。コード類はほぼそのまま。
■使ったもの- Eclispe 3.5 Galileo
- WTP 3.1.1
- Axis2 1.4.1 (1.5.1 はダメだった…)
- Rampart 1.4
- Rampart policy サンプル下の sample-tomcat
- もしかしたら、いるかもしれないもの
- jaxen-1.1.1.jar
- mex-1.5.1-impl.jar
■ 前提- Eclipse WTP で Tomcat v6.0 サーバが構成されている事(Servers ビューに表示されていること。)
- rampart 1.4 がインストールされているフォルダを{rampart}とする。
- {rampart}/sample/policy/sample-tomcatを{sample-tomcat}とする。
■ 作り方
◆ サーバ の構成変更
◆ サービスを作る
◆ クライアントを作る
■ 動かす
- rampart clientを実行する。Eclipse の Console ビュー にて、以下のような内容のレスポンスが表示されることを確認(本当は一行)。
<ns:echoResponse xmlns:ns="http://sample.tomcat.rampart.apache.org">
<ns:return>Hello world</ns:return>
</ns:echoResponse>
- クラスパスの通っているところにlog4j.properties を置いておけば、クライアントのログ出力で、リクエストとレスポンスの中身がわかる。ユーザ名とパスワードを平文で送っている事がわかる。
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-16291471">
<wsu:Created>2009-11-28T04:49:45.562Z</wsu:Created>
<wsu:Expires>2009-11-28T04:54:45.562Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-27667505">
<wsse:Username>alice</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bobPW</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<wsa:To>https://127.0.0.1:8443/rampart-trial2/services/SimpleService</wsa:To>
<wsa:MessageID>urn:uuid:488460AB6C6837F5671259383785225</wsa:MessageID>
<wsa:Action>urn:echo</wsa:Action>
</soapenv:Header>
<soapenv:Body>
<ns1:echo xmlns:ns1="http://sample.tomcat.rampart.apache.org">
<param0>Hello world</param0>
</ns1:echo>
</soapenv:Body>
</soapenv:Envelope>
- localhost をキャプチャできるネットワークモニタで見てみると、ちゃんと暗号化して通信している事も確認できる。
一応、Eclipse + Axis + Rampart を連携させられた。ただ、Axis2 1.5.1 では README 通りの作法でも動かなかったのと、WTP との相性が悪いのもあって、1.4.1 でしか動かせてないのが悩ましい。まあ、実プロジェクトに導入するときのたたき台くらいにはなるかも。
0 件のコメント:
コメントを投稿