2005年3月2日 14:52:42
Java Open Sigle SignOn(以下、JOSSO)とは、Webアプリケーションにシングル・サインオン機能を導入するアプリケーションです。このシングル・サインオン機能をつかうと、複数のWebアプリケーションを使う際にログインなどの認証を1つに集約できます。
ここでは、Tomcat 4.0.28 と JOSSO 1.2を個別にダウンロードしてシングル・サインオン環境を構築する手順を説明する。またJOSSO公式サイトからTomcat 5.0.28 with JOSSO1.2 もダウンロードできる。これは解凍すれば直ぐ使えるため構築する際のデバックに役立つのでダウンロードする事をお勧めする。
Tomcat 4.0.27 or later: このドキュメントでは、Tomcat 4.0.28が最新版のため利用した。(ダウンロード:The Apache Jakarta Project)
JOSSO 1.2:JOSSO公式サイトのインストールガイドはJOSSO 1.1について書いてあったが最新版の1.2を採用した。(ダウンロード:JOSSO公式サイト)
Tomcat 5.0.28 with JOSSO1.2 :既にTomcatにJOSSO1.2を組み込んだバイナリ形式ファイルがダウンロードできる。デバックのためつかった。
OS:
[okita@localhost okita]$ cat /etc/issue
Red Hat Linux release 9 (Shrike)
Kernel \r on an \m
Javaのインストールと確認
JAVA_HOMEの設定
Javaコンパイル環境を構築している事。
javac,javaコマンドで確認
Tomcatのインストールと確認
Jakarta Tomcat v5.0.27 or later
CATALINA_HOMEを設定している事。
http://xxx.xxx.xxx.xxx:8080/で確認
tomcatを停止する(shutdown.sh)
jossoのインストール
http://www.josso.org/からjosso-1.2.tgzをダウンロード
tar -zxvf josso-1.2.tgz
cd josso-1.2
sh build.sh
build.shでビルドしたパッケージの確認
[okita@localhost josso-1.2]$ ls ./build/josso-1.2/
classes generated josso-1.2.jar josso-common-1.2.jar josso.war
JOSSOのパッケージ内容
josso.war シングル・サインオンのサーバ
josso-1.1.jar シングル・サインオン認証スキーマを統合するために必要なスタブ
josso-common-1.1.jar WebアプリケーションとJOSSOが使う共有class群
jossoの配置(deploy)
sh build.sh deploy
jossoの配置確認
deploy:
Copying 1 file to /home/okita/jakarta-tomcat-5.0.28/webapps
Copying 1 file to /home/okita/jakarta-tomcat-5.0.28/server/lib
Copying 1 file to /home/okita/jakarta-tomcat-5.0.28/common/lib
josso.warの確認
[okita@localhost josso-1.2]$ ls ~/jakarta-tomcat-5.0.28/webapps/
ROOT balancer josso.war jsp-examples servlets-examples tomcat-docs webdav
josso-1.2.warの確認
[okita@localhost josso-1.2]$ ls ~/jakarta-tomcat-5.0.28/server/lib/
...
catalina-optional.jar josso-1.2.jar tomcat-jk.jar
...
josso-common-1.2.jarの確認
[okita@localhost josso-1.2]$ ls ~/jakarta-tomcat-5.0.28/common/lib/
...
commons-dbcp-1.2.1.jar josso-common-1.2.jar naming-resources.jar
...
TOMCATの起動(startup.sh)
以下を$CATALINA_HOME/logs/catalina.outから確認
情報: URL file:/home/okita/jakarta-tomcat-5.0.28/webapps/josso からコンテキストパス /josso にWebアプリケーションをインストールします
デモ画面のテスト、user1/user1pwdでログインのテストが出来る。
http://xxx.xxx.xxx.xxx:8080/josso/signon/usernamePasswordLogin.jsp
参考資料
[ Building JOSSO ] http://www.josso.org/building.html
デモ画面をつかってテストする際には、特に設定が必要ないのでここでは、設定ファイルの概要を述べる。
当然だが、JAVA_HOME, CATALINA_HOMEの各環境変数が設定されている必要がある。
JOSSOには、Single-Tier ModeとN-Tier Modeが存在する。N-Tier Modeの説明はここでは書かない。
Single-Tier Modeは、Single Sign-On GatewayとSingle Sign-On Agentの設定をする必要がある。
Single Sign-On Gatewayは、認証スキーマと証明書ストアの設定をすることで行う。設定ファイルは、
$CATALINA_HOME/webapps/josso/WEB-INF/classes/josso-gateway-config.xml
証明書ストアに何をつかうか設定する。デフォルトはメモリ、これはデータベースやLDAPでの管理も可能
<credential-store>
<class>org.josso.gateway.identity.service.store.MemoryIdentityStore</class>
<credentialsFileName>josso-credentials.xml</credentialsFileName>
</credential-store>
Authenticatorと認証されたユーザセッションの管理をおこなうユーザの認証をおこなう。デフォルトはメモリでこれもデータベースやLDAPでの管理が可能。
<sso-identity-store>
<class>org.josso.gateway.identity.service.store.MemoryIdentityStore</class>
<usersFileName>josso-users.xml</usersFileName>
</sso-identity-store>
SSOユーザセッションのライフサイクル管理機能の設定。ほとんどの場合デフォルトで問題ないようだ。
Single Sign-On Agentは、以前Single Sign-On Gatewayで承認されてWebコンテンツにアクセス可能なユーザをチェックする。
josso-config.xmlが大本のファイルで、Single Sign-On Agentの設定が必要な場合は、ここにファイル名を書く。その書かれたファイルに実際の設定を書くことになる。以下がデフォルトの設定。この設定を反映させるには$CATALINA_HOME/binに配置する必要があるようだ。binディレクトリなのでlibなどと間違えない事。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<hierarchicalXml fileName="josso-gateway-config.xml"/>
<!-- SSO Agent-only entries
<hierarchicalXml fileName="josso-agent-config.xml"/>
<hierarchicalXml fileName="josso-reverseproxy-config.xml"/>
-->
</configuration>
以下のコマンドなどでコピーする。
cp -p josso-config.xml ../../../../bin/.
これで動作確認をしたがTomcatが起動できなかったため、Tomcat 4.0.28 with JOSSO 1.2のjosso-config.xmlファイルを確認したところ以下のように書いてあった。先ほどのjosso-config.xmlを以下に書き直すこと。将来のバージョンで上記のようなファイル内容になるかもしれない。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<hierarchicalXml fileName="josso-agent-config.xml"/>
</configuration>
次に$CATALINA_HOME/conf/server.xmlのValveタグを設定してシングル・サインオンの対象Webアプリケーションを指定する。350行目付近にValveの設定があるのでここに以下を記述する。
<Valve className="org.josso.agent.SSOAgentValve" debug="1"/>
$CATALINA_HOME/conf/server.xmlのRealmタグを設定して、TomcatとJOSSのrealm統合する。210行目付近にある。
<Realm className="org.josso.agent.jaas.CatalinaJAASRealm"
appName="josso"
userClassNames="org.josso.gateway.identity.service.BaseUserImpl"
roleClassNames="org.josso.gateway.identity.service.BaseRoleImpl"
debug="1" />
JAAS(Java Authentication and Authorization Service)の設定
$CATALINA_HOME/conf/jass.confを作成する
josso {
org.josso.agent.jaas.SSOGatewayLoginModule required debug=true;
};
起動時にこの設定ファイルを読み込む必要がある。そのためJAVA_OPTS環境変数を定義してstartup.shコマンド実行時にオプションを読み込むようにする。
export JAVA_OPTS=-Djava.security.auth.login.config=../conf/jaas.conf
対象となるWebアプリケーションを設定する。ファイル名をjosso-agent-config.xmlとして、$CATALINA_HOME/binに配置する。
<agent>
<class>org.josso.agent.CatalinaSSOAgent</class>
<gatewayLoginUrl>http://localhost:8080/josso/signon/login.do</gatewayLoginUrl>
<gatewayLogoutUrl>http://localhost:8080/josso/signon/logout.do</gatewayLogoutUrl>
<sessionAccessMinInterval>1000</sessionAccessMinInterval>
<service-locator>
<class>org.josso.gateway.WebserviceGatewayServiceLocator</class>
<endpoint>localhost:8080</endpoint>
</service-locator>
<partner-apps>
<partner-app>
<context>/partnerapp</context>
</partner-app>
</partner-apps>
</agent>
詳細は確認していないが、実行権限がないとTomcat起動時にエラーがでて起動できないためchmodでアクセス権限を変更する。
chmod 755 $CATALINA_HOME/bin/josso-*
$CATALINA_HOME/bin/startup.shでTomcatを起動する。$CATALINA_HOME/logs/catalina.outで起動ログが確認できるのでデバック時に使う事。
今回、Tomcat 5.0.28 と JOSSO 1.2を個別にインストールしシングル・サインオン環境を構築したが正常に動作しなかった。トラブルシューティングには、Tomcat 5.0.28 with JOSSO1.2を確認する事。この設定ファイルの場所などを確認すると解決しやすい。またXMLエディタやIEのXML解析機能をつかってXML構文が間違えていない事も常に確認した方が良い。私の場合、$CATALINA_HOME/binの設定で正常に動作できなかった。
最後にTomcatが正常に動作している事が確認できたら、サンプルのpartnerアプリケーションをjossoディレクトリから配置する。
cd josso-1.2
sh build.sh deploy-samples
コマンド実行時の標準出力には、正常時は以下のように出力される。
prepare-webapp-samples:
Created dir: /home/okita/josso-1.2/build/webapp/partnerapp/WEB-INF/classes
war-samples:
Building jar: /home/okita/josso-1.2/build/josso-1.2/partnerapp.war
deploy-samples:
Copying 1 file to /home/okita/jakarta-tomcat-5.0.28/webapps
BUILD SUCCESSFUL
$CATALINA_HOME/logs/catalina.outには、正常時は以下のように出力される。
2005/03/02 14:39:48 org.apache.catalina.core.StandardHostDeployer install
情報: URL file:/home/okita/jakarta-tomcat-5.0.28/webapps/partnerapp からコンテキ
ストパス /partnerapp にWebアプリケーションをインストールします
以下にアクセスする。user1/user1pwdでアクセスできる。
http://localhost:8080/partnerapp/protected
ログイン画面が出てこない場合は、$CATALINA_HOME/bin/josso-agent-config.xmlの設定を確認してみる事。私の場合は、localhostの解決が正常ではなかったため固定のIPアドレスを割り振る事で解決した。
The Apache Jakarta Project : http://jakarta.apache.org/
Java Open Sigle SignOn : http://www.josso.org/