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

Back to archive index

Sunday Walker sunday_walker_field****@yahoo*****
2010年 9月 28日 (火) 00:40:13 JST


SundayWalkerです。

あきぴー さんのブログにLDAPの話が出ていたので、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」は適切に変更ください。
------------
                 <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>
+                <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
+                    <property name="filter" value="sAMAccountName=%u" />
+                    <property name="searchBase" value="cn=Users, dc=MyCompany, dc=co, dc=jp />
+                    <property name="contextSource" ref="contextSource" />
+                    <property name="ignorePartialResultException" value="yes" />
+                </bean>
             </list>
         </property>
     </bean>
+
+    <!-- Context source definition -->
+    <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
+        <property name="pooled" value="false" />
+        <property name="urls">
+            <list>
+                <value>ldap://MyLdapAddress/</value>
+            </list>
+        </property>
+        <property name="baseEnvironmentProperties">
+            <map>
+                <entry>
+                    <key>
+                        <value>java.naming.security.authentication</value>
+                    </key>
+                    <value>simple</value>
+                </entry>
+            </map>
+        </property>
+    </bean>
 
     <!-- Data source definition -->
------------

--- Sunday Walker  wrote:
> こんにちは、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のパッチも作成してみました。
> 以下に、その手順を示します。
> 
> 以下の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></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-pool-1.5.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/

--------------------------------------
Get the new Internet Explorer 8 optimized for Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/ie8/




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