2016-09-14 12 views
0

私は、Red Hat JBoss Fuse(ファブリック内)内のCXFにSOAP/RESTサービスを実装しています。 基本認証で保護する必要があり、LDAPサーバーで資格情報を確認する必要があります。LDAPユーザーの基本認証を使用してCXFサービスを保護する

これはカスタムインターセプタなしで行うことができますか?

コンソールを保護するのと同じ方法で、サービスを保護するために、コンテナJAASセキュリティ(LDAPで設定)を使用できますか?

答えて

0

はいコンテナJAASセキュリティレルムを使用して、Webサービスを保護できます。 例はhereです。 例のページには、実装を説明していませんが、blueprint.xmlファイルを簡単に見てみると、以下の構成を明らかに:

<jaxrs:server id="customerService" address="/securecrm"> 
    <jaxrs:serviceBeans> 
     <ref component-id="customerSvc"/> 
    </jaxrs:serviceBeans> 
    <jaxrs:providers> 
     <ref component-id="authenticationFilter"/> 
    </jaxrs:providers> 
</jaxrs:server> 
<bean id="authenticationFilter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter"> 
    <!-- Name of the JAAS Context --> 
    <property name="contextName" value="karaf"/> 
</bean> 

は、だから、JAAS認証フィルタを設定するだけです。 "karaf"はコンテナのデフォルトのJAASレルムです。ユーザーはetc/users.propertiesに定義されています より多くのレルムを定義するには、情報はhereです。 LDAP上にユーザーを置くには、hereを参照してください。

0

上記の答えは正しいですが、Fuseのより新しいバージョン(6.1以降)では、デフォルトのkaraf領域を無効にするためにLDAP構成の「ランク」が100より大きくなければならないことに注意してください。

また、ヒューズ6.2.xのでは、印加電流のパッチで、LDAP接続用の接続プールを有効にすることができます。

<!-- LDAP connection pooling --> 
    <!-- http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/pool.html --> 
    <!-- http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/config.html --> 
    context.com.sun.jndi.ldap.connect.pool=true 

    </jaas:module> 
</jaas:config> 

これは、大量のWebサービスのために非常に重要です。接続プールはLDAPサーバーに保持されます。これにより、接続作成のオーバーヘッドが回避され、TIME-WAIT状態の閉鎖ソケットが残っています。

+0

非常に有用な情報です。これらの詳細を説明するドキュメントへのリンクを投稿してください。ありがとうございました。 – xtian

+0

接続プールについては、https://access.redhat.com/solutions/2219901を参照してください。 –