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/