TestLink1.9 CAS (SSO) パッチ
こんにちは、SundayWalkerです。
TestLink1.9が公開され、久しいです。
以前、TestLink1.9beta6用のCASパッチを紹介しましたが、TestLink1.9用のパッチも提供します。
以下の文面は以前と同様な内容となっていますが、お許しください。
以前から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 を修正します。(以下を参考)
------------
+
+
+ Select hashed_password from users where auth_source_id IS NULL AND status = 1 AND login = ?
+
+
+
+
+
+
+
+
+
+
+
+ com.mysql.jdbc.Driver
+
+
+ jdbc:mysql://localhost:3306/redmine
+
+ root
+ tokoya3
+
+
------------
xampp\tomcat\webapps\cas\META-INF\maven\org.jasig.cas\cas-server-webapp\pom.xml を修正します。(以下を参考)
------------
org.jasig.cas
cas-server-support-ldap
${project.version}
+
+
+ org.jasig.cas
+ cas-server-support-jdbc
+ ${project.version}
+
------------
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* ファイルを編集します。(以下を参考)
------------
LoadModule jk_module modules/mod_jk.so
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"
#
# Options All
#
+
+
+ Options All
+
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 を編集します。(以下を参考)
------------
+
------------
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.9に添付のパッチを適用する。
もしくは、添付のzipのtestlinkフォルダのファイルを上書きする。
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にチェック
---------------------------------------------------------
CASの認証にLDAPを追加する方法も紹介しておきます。
先に示した xampp\tomcat\webapps\cas\WEB-INF\deployerContext.xml の修正の後にさらに、 xampp\tomcat\webapps\cas\WEB-INF\deployerContext.xml を修正します。(以下を参考)これによって、RedmineのDBでの認証に加えて、LDAP(ActiveDirectory)での認証ができます。なお、「dc=MyCompany, dc=co, dc=jp」と「MyLdapAddress」は適切に変更ください。
------------
Select hashed_password from users where auth_source_id IS NULL AND status = 1 AND login = ?
+
+
+
+
+
+
+
+
+
+
+
+ ldap://MyLdapAddress/
+
+
+
+
+
+
------------
以上、皆さんの参考になれば幸いです。