3

ユーザー認証のために、Ja-sig CAS サーバー (Tomcat7 で実行されている v3.5) を MySQL データベースに接続しようとしています。私は基本的に、データベースに「users」というテーブルを持っており、CAS にチェックさせたいユーザー名とパスワードのペアを保存しています。ただし、現在の構成を展開することさえ困難です。

これは、データベース接続に関連する pom.xml からの抜粋です。

<dependency>
   <groupId>org.jasig.cas</groupId>
   <artifactId>cas-server-support-jdbc</artifactId>
   <version>${cas.version}</version>
</dependency>

<dependency>
   <groupId>commons-dbcp</groupId>
   <artifactId>commons-dbcp</artifactId>
   <version>1.4</version>
   <scope>runtime</scope>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.22-bin</version>
   <scope>provided</scope>
</dependency>

ここでは、WEB-INF/deployerConfigContext.xml でデータベース接続をセットアップしようとしています。

<bean
class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler">
   <property name="tableUsers">
       <value>users</value>
   </property>
   <property name="fieldUser">
       <value>username</value>
   </property>
   <property name="fieldPassword">
       <value>password</value>
   </property>
   <property name="passwordEncoder">
       <bean
             class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
        <constructor-arg value="MD5" />
       </bean>
   </property>
   <property name="dataSource" ref="dataSource" />
</bean>

<bean id="datasource"
      class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property name="url">
        <value>jdbc:mysql://localhost:3306/cas_db</value>
    </property>
    <property name="username">
        <value>cas_server</value>
    </property>
    <property name="password">
        <value>pass</value>
    </property>
</bean>

Maven では問題なくビルドできますが、Tomcat でデプロイしようとすると機能しません。どの tomcat ログにも、特に有益なものは見つかりませんでした。「commons-dbcp」に問題があるのではないかと考えています。それをコメントアウトして deployerConfigContext.xml で単純な認証ハンドラーを使用すると、デプロイできるからです。

私の現在のウェブ調査から、これに関する文書はほとんど/貧弱であるようです。誰かが推奨できる優れたリソースがあれば、それは大歓迎です。

4

2 に答える 2

3

最後に、Tomcat ログ localhost.YYYY-MM-DD.log でエラーの痕跡を見つけました。結局のところ、commons-pool を追加する必要がありました。

<dependency>
   <groupId>commons-pool</groupId>
   <artifactId>commons-pool</artifactId>
   <version>1.6</version>
   <scope>provided</scope>
</dependency>

commons-dbcp が依存するもの。これをMavenでインストールすると、欠落しているクラス例外がなくなりました。

次の問題は、データソース Bean を deployerConfigContext.xml の authenticationHandlers のリストに誤って定義したことで、型変換の例外が発生したことでした。リストタグからBeanを移動すると、うまくいきました。

于 2012-10-09T16:32:09.047 に答える
0

CAS + JDBC 認証 ( https://wiki.jasig.org/display/CASUM/Using+JDBC+for+Authentication )の公式ガイドの 1 つで、次のようにコメントしています。

注: MySQL では、新しいバージョンではなく commons-dbcp 1.2.1 を使用することをお勧めします。新しいバージョン (1.2.2) では、CAS が 8 時間以上アイドル状態になった後、MySQL でソケット書き込みエラーが発生することがわかりました。これは、MySQL がすべてのアイドル状態の接続をクリーンアップする時間です。

問題はcommons-dbcpのバージョンに関連している可能性があります。私の場合、commons-dbcp バージョンの違いを除いて、あなたと同様の構成を使用しています。1.4 を使用しています (問題ありません)。

于 2015-10-15T11:01:37.640 に答える