うー、このエントリは微妙。とりあえずサーブレットがないと動かないので整備します。tomcat5.5系でいけるっぽいです。
とりあえずjavaいれます
# apt-get install sun-java6-jdk
tomcatは5.5系を手インストールしてしまいます。パッケージで管理するのが面倒なものの1つだったりします(多分)
http://tomcat.apache.org/download-55.cgi
(面倒なので全部root、実運用するときは気をつけてやってください)
# tar xvzf apache-tomcat-5.5.27.tar.gz # mv apache-tomcat-5.5.27 /usr/local/tomcat5 # ./startup.sh Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program
となるので起動スクリプトでexportしてやったりでもいいんですけど、環境変数JAVA_HOMEを適切に向けます。
JAVA_HOME=/usr/lib/jvm/java-6-sun
どこだったか忘れた場合は/usr/share/doc以下がポインタになってくれるはずです
http://www.ja-sig.org/products/cas/downloads/
ここからダウンロード可能
# cp ./cas-server-3.3.1/modules/cas-server-webapp-3.3.1.war \ /usr/local/tomcat5/webapps/cas.war
こんなんでいいんかなぁ…
memcachedにチケットをつっこむ方法。
http://www.ja-sig.org/wiki/display/CASUM/MemcacheTicketRegistry
とりあえずやってみると
# vi webapps/cas/META-INF/maven/org.jasig.cas/cas-server-webapp/pom.xml
dependencies内に以下を加える
<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-integration-memcached</artifactId> <version>${project.version}</version> <type>jar</type> </dependency>
続いてwebapps/cas/WEB-INF/spring-configuration/ticketRegistry.xml
<!-- Ticket Registry --> <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.DefaultTicketRegistry" />
こんなのがあるのでこれをこうする
<bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.MemCacheTicketRegistry"> <constructor-arg index="0"> <list> <value>192.168.201.72:11211</value> <value>192.168.201.73:11211</value> </list> </constructor-arg> <constructor-arg index="1" type="int" value="21600" /> <constructor-arg index="2" type="int" value="300" /> </bean>
落ちました
nested exception is java.lang.ClassNotFoundException: org.ja sig.cas.ticket.registry.MemCacheTicketRegistry
ソース内にmodules/cas-server-integration-memcached-3.3.1.jarってのがありました。webapps/cas/WEB-INF/lib/にでもつっこんどけばいいんでしょか?
# cp modules/cas-server-integration-memcached-3.3.1.jar \ /usr/local/tomcat5/webapps/cas/WEB-INF/lib/
で再起動してみる。はい落ちました
nested exception is java.lang.NoClassDefFoundError: net/spy/memcached/MemcachedClient
ううーむ
http://bleu.west.spy.net/~dustin/repo/spy/jars/
この辺からmemcached.jarとspy.jarをつっこんでいれたら起動はした、が、
nested exception is java.lang.UnsupportedOperationException: GetTickets not supported.
ううううーむ
余計な設定を省いたらなんかいけたっぽい?
デフォルトの認証ハンドラはテスト用なのでそのままだと怒られます。
org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler is only to be used in a testing environment. NEVER enable this in a production environment.
ここではまずOpenldap (slapd)との接続を試みる事にします。基本的には以下のマニュアルで賄えるもの
META-INF/maven/org.jasig.cas/cas-server-webapp/pom.xmlとかにあります。こんな感じで足します
<dependency> <groupId>${project.groupId}</groupId> <artifactId>cas-server-support-ldap</artifactId> <version>${project.version}</version> </dependency>
でもこれ、mavenの設定ファイルだろうからサーバ上でこれを書き換えてもあんまり意味なさそうというか、本来はmavenであれこれするべきなんでしょうが、、まぁいいか。。。
WEB-INF/deployerConfigContext.xmlを書き換え。書き換える部分は2箇所(to be added)
これでサーバの再起動をかけます。例によってdependが足らんといわれるんで
nested exception is java.lang.ClassNotFoundException: org.jasig.cas .adaptors.ldap.util.AuthenticatedLdapContextSource
こういうのをmavenでどうこうするはずなんですが、手でも何とかなるっぽいのでします。 展開したソースコードに./modules/cas-server-support-ldap-3.3.1.jarていうのがいるので、これをWEB-INF/lib/内にコピーします。すると
nested exception is j ava.lang.NoClassDefFoundError: org/springframework/ldap/core/support/LdapContext Source
となるので、やはり http://www.springsource.org/ldap この辺から取得してきます。今回はspring-ldap-bin-with-dependencies-1.2.1というのを利用しました。この辺もmavenで自動的にfetchしてくれるんだろうねえ…でもdepenciesはいらないかもしれませんでした。とりあえずdist/の中に入っているjarを例によってWEB-INF/libにコピーして起動してみました。
INFO [org.jasig.cas.authentication.AuthenticationManager Impl] - <AuthenticationHandler: org.jasig.cas.adaptors.ldap.BindLdapAuthenticati onHandler successfully authenticated the user which provided the following crede ntials: [username: test]>
うまくいくとこんな感じのログ
なんとなくわかってきたのでメモ