2011-10-25 19 views
0

すべて同じTomcat 5.5サーバーで実行される2組のWebアプリケーションがあります。別のデータソースを使用して共有のtomcatレルムを設定したい

私はserver.xmlで定義された一つの共通のレルムがありますが、異なるデータソースと、このデータソースとでSingleSignOnを共有したい、とSINGLESIGNONを使用するために、私の「カナダ」の両方のアプリケーション

<!-- Define the top level container in our container hierarchy --> 
<Engine defaultHost="localhost" name="Catalina"> 

    <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> 

    <Realm 
     className="com.key.portal.common.realm.PortalDataSourceRealm" 
     debug="0" 
     dataSourceName="jdbc/usa" 
     userTable="user_info" 
     userNameCol="username" 
     userIdCol="username" 
     userCredCol="password" 
     userInactiveCol="inactive" 
     userRoleTable="user_role" 
     roleNameCol="role" /> 

私の「USA」のアプリケーションを。 (たとえばjdbc/canada

このトップレベルのエンジンコンテナを2つの部門に分割する方法や、dataSourceNameをオーバーライドするようにアプリケーションを設定する方法はありますか? Tomcatのドキュメントでは、「エンジン」セクションを1つだけ定義できます。

しかし、両方のWebアプリケーションのセットは、異なるデータソースを使用して接続する必要があります。

答えて

0

Realmは、Host(またはContextの内部でさえ)要素内に配置できます。 usacanadaアプリケーションが異なる場合は、解決策になる可能性があります。

彼らは同じHost内にある場合は、米国アプリケーションのすべてのContextRealmタグを入れて、カナダアプリ(Engineタグにネストされている)デフォルトのレルムまたはその逆を使用できるようにする必要があり。ドキュメントから

Realm Configuration HOW-TO, Configuring a Realm

要素は、以下の コンテナ要素のいずれかの中にネストすることができます。

[...]

  • 内側:レルム要素の位置は、そのレルムの「スコープ」に直接 影響(すなわち、そのウェブアプリケーションが 同じ認証情報を共有する)を有しています要素 - このレルムは、この仮想ホストのすべてのWebアプリケーションで共有されます。ただし、下位要素の中にネストされた領域 要素によってオーバーライドされない限り、このレルムは共有されます。
  • 要素内 - このレルムは、このWebアプリケーション用にのみ使用されます。ここで

解答例と同様の質問です:how can I restrict users to access ONLY their own manager?

関連する問題