[Testlinkjp-users] TestLink1.9b6 CAS (SSO) パッチ

Back to archive index

Sunday Walker sunday_walker_field****@yahoo*****
2010年 9月 25日 (土) 13:49:50 JST


こんにちは、SundayWalkerです。

TestLink1.9beta6が公開され、TestLink1.9RC1のテストを行いつつあるようで、今後が楽しみな状況になっています。

以前からTestLinkとRedmineは、非常に良いツールと思っており、2つのツールの連携がより強化できると良いと考えておりました。

最近、RedmineでCAS (Single Sign On)のプラグインが公開されていることを知りました。
http://www.redmine.org/wiki/redmine/Plugin_List#CAS-single-sign-on-authentication-plugin

TestLinkで認証にCASをサポートできれば、2つのツールが1回のログインで使えるようになり、便利になると考え、TestLinkでCASをサポートした情報がないかを探してみましたが、そのような情報を見つけることができませんでした。

そこで、CASでRedmineのDBのユーザ情報をもとに認証を行えるように設定し、さらにTestLinkのCASパッチも作成してみました。

以下に、その手順を示します。

以下のlocalhostの部分は適切なホスト名に変更ください。
また、セキュリティ上はCASサーバはSSLを使用するのが良いのですが、簡単のため暗号化せずにhttpとしています。

====================================================
(1) CASの設定
====================================================

私の環境ではxamppを使用しているので、xamppにtomcatアドオンをインストールします。
http://www.apachefriends.org/jp/xampp-windows.html

CASを http://www.jasig.org/cas/download より cas-server-3.3.5.1-release.zip ダウンロードし、解凍します。
cas-server-3.3.5.1\modules\cas-server-3.5.5.1.war を xampp\tomcat\webapps\cas.war という名称でコピーします。
tomcatを起動します。

Webブラウザで http://localhost:8080/cas/login にアクセス
ネットID:admin
パスワード:admin
でログインできることを確認します。

xampp\tomcat\webapps\cas\WEB-INF\deployerContext.xml を修正します。(以下を参考)
------------
 				<!--
 					| This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS 
 					| into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
 					| where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
 					| local authentication strategy.  You might accomplish this by coding a new such handler and declaring
 					| edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
 					+-->
+<!--
 				<bean
 					class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
+-->
+				<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
+					<property name="sql"><value>Select hashed_password from users where auth_source_id IS NULL AND status = 1 AND login = ?</value></property>
+					<property name="passwordEncoder">
+						<bean class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
+							<constructor-arg value="SHA" />
+						</bean>
+					</property>
+					<property name="dataSource" ref="dataSource" />
+				</bean>
			</list>
		</property>
	</bean>
+
+	<!-- Data source definition -->
+	<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/redmine</value>
+		</property>
+		<property name="username"><value>root</value></property>
+		<property name="password"><value>tokoya3</value></property>
+	</bean>
+

------------


xampp\tomcat\webapps\cas\META-INF\maven\org.jasig.cas\cas-server-webapp\pom.xml を修正します。(以下を参考)
------------
 <dependency>
 	<groupId>org.jasig.cas</groupId>
 	<artifactId>cas-server-support-ldap</artifactId>
 	<version>${project.version}</version>
 </dependency>
+
+<dependency>
+	<groupId>org.jasig.cas</groupId>
+	<artifactId>cas-server-support-jdbc</artifactId>
+	<version>${project.version}</version>
+</dependency>

------------


xampp\tomcat\webapp\cas\WEB-INF\lib に
cas-server-3.3.5.1\modules\cas-server-support-jdbc-3.3.5.1.jar をコピーする。

http://dev.mysql.com/downloads/mirror.php?id=390509#mirrors から
mysql-connector-java-5.1.13.zipをダウンロードして解凍

http://commons.apache.org/dbcp/
http://commons.apache.org/dbcp/download_dbcp.cgi から
commons-dbcp-1.4-bin.zipをダウンロードして解凍

http://commons.apache.org/pool/
http://commons.apache.org/pool/download_dbcp.cgi から
commons-dbcp-1.4-bin.zipをダウンロードして解凍

xampp\tomcat\common\lib に上記解凍に含まれる
mysql-connector-java-5.1.13-bin.jar
commons-dbcp-1.4.jar
commons-pool-1.5.4.jar
をコピーする。

tomcatを再起動し、Webブラウザで http://localhost:8080/cas/login にアクセスし、
Redmineのadminのパスワードでログインできることを確認します。


xampp\apache\conf\extra\java.conf もしくは xampp\apache\conf\extra\mod_jk.conf* ファイルを編集します。(以下を参考)
------------
 <IfModule !mod_jk.c>
     LoadModule jk_module modules/mod_jk.so
 </IfModule>
 
 <IfModule mod_jk.c>
 JkWorkersFile "/xampp/tomcat/conf/workers.properties"
 JkLogFile "/xampp/tomcat/logs/mod_jk.log"
 JkLogLevel info
 JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 
 # Alias /examples "/xampp/tomcat/webapps/examples"
+Alias /cas "/xampp/tomcat/webapps/cas"

 #<Directory "/xampp/tomcat/webapps/examples">
 #       Options All
 #   </Directory>
+
+ <Directory "/xampp/tomcat/webapps/cas">
+       Options All
+ </Directory>
 
 JkMount /*.jsp ajp13
 JkMount /java/* ajp13
 JkMount /jsp-examples/* ajp13
 JkMount /servlets-examples/* ajp13
+JkMount /cas/* ajp13
------------

xampp\apache\conf\http.confに上記ファイルをインクルードするように編集します。(以下を参考)
------------
 # Secure (SSL/TLS) connections
 Include conf/extra/httpd-ssl.conf
+
+# Tomcat connections
+Include conf/extra/java.conf
------------

tomcatを再起動して、apacheを再起動し、Webブラウザで http://localhost/cas/login にアクセスし、
Redmineのadminのパスワードでログインできることを確認します。

xampp\tomcat\conf\server.xml を編集します。(以下を参考)
------------
+<!--
     <Connector port="8080" maxHttpHeaderSize="8192"
                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                enableLookups="false" redirectPort="8443" acceptCount="100"
                connectionTimeout="20000" disableUploadTimeout="true" />
+-->
------------

tomcatを再起動して、apacheを再起動し、Webブラウザで http://localhost:8080/cas/login にアクセスし接続できないことを確認し、、
http://localhost/cas/login にアクセスし、Redmineのadminのパスワードでログインできることを確認します。



====================================================
(2) TestLinkの設定
====================================================

xampp\php\php.ini を編集します。(以下を参考)
------------
-memory_limit = 16M      ; Maximum amount of memory a script may consume (16MB)
+memory_limit = 128M      ; Maximum amount of memory a script may consume (16MB)


-:extension=php_curl.dll
+extension=php_curl.dll


-;extension=php_openssl.dll
+extension=php_openssl.dll

------------


xampp\apache\conf\http.conf 以下の行がなければ追加します。
PHPIniDir "c:/xampp/php"


コマンドプロンプトにてphpフォルダをカレントフォルダとして以下を実行します。
>go-pear.bat
>pear install http://downloads.jasig.org/cas-clients/php/1.1.2/CAS-1.1.2.tgz

TestLink1.9b6に添付のパッチを適用する。

CASサーバにてSSLを使用していない場合は、 xampp/php/PEAR/CAS/client.php を編集します。(以下を参考)
ポート番号は適当に変更等行ってください。
------------
 		{ 
 		// the URL is build only when needed
 		if ( empty($this->_server['base_url']) ) {
-			$this->_server['base_url'] = 'https://'
+			if (($this->getServerPort()==80)||($this->getServerPort()==8080)) {
+				$this->_server['base_url'] = 'http://' ;
+			} else {
+				$this->_server['base_url'] = 'https://' ;
+			}
+			$this->_server['base_url'] = $this->_server['base_url']
 				.$this->getServerHostname()
 				.':'
 				.$this->getServerPort()
------------



====================================================
(3) Redmineの設定
====================================================

CASプラグインを
http://github.com/ifad/redmine-cas-plugin
の「Download Source」からダウンロードする。(ZIPを選択)

redmine\vendor\plugins\redmine-cas に解凍したものをコピーする。

コマンドプロンプトで以下を実行

>gem install rubycas-client

Redmineの「管理」「プラグイン」の「CAS Authentication」の「設定」にて、
Enabledにチェック
CAS base urlにhttp://localhost/cas/
Keep native login linkにチェック


以上、皆さんの参考になれば幸いです。

--------------------------------------
Get the new Internet Explorer 8 optimized for Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/ie8/
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: testlink1.9b6-CAS.patch
型:         application/octet-stream
サイズ:     4829 バイト
説明:       無し
Download 



Testlinkjp-users メーリングリストの案内
Back to archive index