2016-05-16 11 views
0

既存のXMLベースのWebサービスをREST Webサービスに変換したい。サービスはすでに動作していますが、セキュリティの実装には苦労しています。jax-rsとcxfインターセプタとコールバックハンドラ

は、かつての実装では、我々は、この(ファイルws-server-context.xml)のようなインターセプタを使用:

このエンドポイントのアドレスが呼ばれるたび
<jaxws:endpoint id="someService" implementor="..." address="/..." > 
    <jaxws:inInterceptors> 
     <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" /> 
     <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> 
      <constructor-arg> 
       <map> 
        <entry key="action" value="UsernameToken" /> 
        <entry key="passwordType" value="PasswordText" /> 
        <entry key="passwordCallbackRef" value-ref="sessionService" /> 
       </map> 
      </constructor-arg> 
     </bean> 
    </jaxws:inInterceptors> 
</jaxws:endpoint> 

、適切な資格情報をチェック呼び出されるメソッド豆sessionServicehandle(Callback[] callbacks)、 (ユーザ名+トークン)。このBeanは、インタフェースCallbackHandlerを実装しています。

JAX-RSでこのアプローチをどのように実装できますか?エンドポイントはWebサービスクラス自身(@Path)で定義されているので、そこにアノテーションを使用する必要はありますか?インターセプタを登録するにはどうすればよいですか?

ありがとうございました!代わりに、迎撃の

+0

この@Philippを解決できましたか? – Sampada

+0

実際には別のフレームワークを使用しているので、実際にはこのセキュリティアプローチを続行しません。しかし、助けてくれてありがとう! –

+0

OK。今どのフレームワークを使用しているのか分かりますか?私も助けてくれるかもしれません! – Sampada

答えて

1

、あなたのweb.xmlにフィルタを宣言することができます -

<filter> 
     <display-name>MyFilter</display-name> 
     <filter-name>MyFilter</filter-name> 
     <filter-class>com.*.MyFilter</filter-class> 
</filter> 
<filter-mapping> 
     <filter-name>MyFilter</filter-name> 
     <url-pattern></url-pattern> <!-- keep this same as your rest servlet's url pattern --> 
</filter-mapping> 

このクラスは、あなたのJAX-RS実装の前に呼び出されます。

フィルタクラス内のcallBackHandlerを参照できます。

関連する問題