Interstage Application Server シングル・サインオン運用ガイド
目次 索引 前ページ次ページ

第5章 アプリケーションの開発> 5.1 Javaアプリケーションの開発> 5.1.5 サンプルコード

5.1.5.2 ユーザID/パスワードで認証と認可をするアプリケーション

サンプルコードの概要

 本サンプルコードは、画面から入力したユーザID/パスワードで認証を行い、セキュリティポリシーに従って認可を行うアプリケーションです。

サンプルコードの格納場所

 サンプルコードは以下のディレクトリに格納されています。以下、サンプルディレクトリと呼びます。


 Interstageのインストールディレクトリ:デフォルト
 C:\Interstage\F3FMsso\ssoatzag\sample\javaapi


 /opt/FJSVssoaz/sample/javaapi

 サンプルコードの実行に必要なファイルは以下のとおりです。

ファイル名

説明

ISSsoJaas.java

サンプルJavaソース(認証、認可を行うクラス)

ISSsoAction.java

サンプルJavaソース(保護リソースをアクセスするクラス)

isssojaaslogin.conf

ログイン構成ファイルのサンプル

isssojaas.policy

JDK1.3の場合に使用するセキュリティポリシーファイルのサンプル

isssojaasauth.policy

JDK1.3の場合に使用するプリンシパルベースのセキュリティポリシーファイルのサンプル

isssojaas14.policy

JDK1.4の場合に使用するセキュリティポリシーファイルのサンプル

サンプルコードの実行手順

(1) 事前に準備するもの

 以下を準備してください。

  1. 認証サーバのURL
  2. 認証サーバがSSL環境の場合、認証サーバのサイト証明書および認証局の証明書
  3. 認証サーバのユーザの情報(基本認証を行うユーザのユーザID/パスワード/所属するロール名)

(2) 環境変数の設定

 CLASSPATH、JAVA_HOME、PATHの環境変数を設定します。

JDK1.3の場合


 Interstageのインストールディレクトリ:デフォルト
 JDKのインストールディレクトリ:"C:\Interstage\JDK13"

C:\>set CLASSPATH=
C:\Interstage\J2EE\lib\jsse.jar;C:\Interstage\J2EE\lib\jcert.jar;
C:\Interstage\J2EE\lib\jnet.jar;C:\Interstage\J2EE\lib\isj2ee.jar;
C:\Interstage\F3FMsso\ssoatzag\lib\isssomod.jar;%CLASSPATH%
C:\>set JAVA_HOME=C:\Interstage\JDK13
C:\>set PATH=%JAVA_HOME%\bin;%PATH%

# sh
# CLASSPATH=
/opt/FJSVj2ee/lib/jsse.jar:/opt/FJSVj2ee/lib/jcert.jar:/opt/FJSVj2ee/lib/jnet.jar:
/opt/FJSVj2ee/lib/isj2ee.jar:/opt/FJSVssoaz/lib/isssomod.jar:$CLASSPATH
# export CLASSPATH
# JAVA_HOME=/opt/FJSVawjbk/jdk13
# export JAVA_HOME
# PATH=$JAVA_HOME/bin:$PATH
# export PATH

JDK1.4の場合


 Interstageのインストールディレクトリ:デフォルト
 JDKのインストールディレクトリ:"C:\Interstage\JDK14"

C:\>set CLASSPATH=C:\Interstage\F3FMsso\ssoatzag\lib\isssomod14.jar
C:\>set JAVA_HOME=C:\Interstage\JDK14
C:\>set PATH=%JAVA_HOME%\bin;%PATH%

# sh
# CLASSPATH=/opt/FJSVssoaz/lib/isssomod14.jar
# export CLASSPATH
# JAVA_HOME=/opt/FJSVawjbk/jdk14
# export JAVA_HOME
# PATH=$JAVA_HOME/bin:$PATH
# export PATH

(3) サンプルJavaソースのコンパイルおよびjarファイル化

 サンプルディレクトリ配下のサンプルJavaソースをjavacコマンドでコンパイルします。コンパイルが終了したら、jarコマンドを使用してjarファイル化します。javacコマンド、jarコマンドについては、Sun Microsystems,Inc.から提供されているJ2SDKのドキュメントを参照してください。



 Interstageのインストールディレクトリ:デフォルト

C:\>cd C:\Interstage\F3FMsso\ssoatzag\sample\javaapi
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>javac -d . ISSsoJaas.java ISSsoAction.java
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>jar cf isssojaas.jar sample\ISSsoJaas.class
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>jar cf isssoaction.jar sample\ISSsoAction.class
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>


 作業用ディレクトリ:"/home/jaastest"

# cp -r /opt/FJSVssoaz/sample/javaapi /home/jaastest
# cd /home/jaastest/javaapi
# javac -d . ISSsoJaas.java ISSsoAction.java
# jar cf isssojaas.jar sample/ISSsoJaas.class
# jar cf isssoaction.jar sample/ISSsoAction.class

#

(4) サービスIDファイルの入手

 サンプルを実行する業務サーバに対するサービスIDファイルの作成をSSO管理者に依頼します。作成したサービスIDファイルはサンプルを実行する業務サーバに格納します。



 Interstageのインストールディレクトリ:デフォルト
 SSO管理者から入手したサービスIDファイル名:"C:\ssosid\domainsid"

C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>copy C:\ssosid\domainsid C:\Interstage\F3FMsso\ssoatzag\sample\javaapi
  1 個のファイルをコピーしました。


 SSO管理者から入手したサービスIDファイル名:"/ssosid/domainsid"

# cp /ssosid/domainsid /home/jaastest/javaapi

(5)証明書の登録

 認証サーバがSSL環境で動作している場合、認証サーバのサイト証明書および認証サーバの認証局の証明書を取得し、Interstage証明書環境に登録します。詳細については “トラストストアファイルの作成”を参照してください。


 サイト証明書、または認証局の証明書がUTF-8形式の場合、JDK1.4を使用してください。

(6) ログイン構成ファイルの編集

 サンプルログイン構成ファイルisssojaaslogin.confを実行環境に合わせて編集します。authserverオプションに使用する認証サーバのURLを設定します。また、serviceidpathオプションに使用するサービスIDファイルの絶対パス名を設定します。

 Interstageのインストールディレクトリ:デフォルト
 認証サーバのURL:"https://authenticate_server.fujitsu.com:10443/ssoatcag"
 サービスIDファイルの絶対パス名:"C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\domainsid"

/**
 *  sample login config file
 */

/* This sample does not use Business server configuration. */
com.fujitsu.interstage.sso{
   com.fujitsu.interstage.sso.auth.module.ISLoginModule Required
   authserver="https://authenticate_server.fujitsu.com:10443/ssoatcag"  <− ここを編集する
   serviceidpath="C:\\Interstage\\F3FMsso\\ssoatzag\\sample\\javaapi\\domainsid"  <− ここを編集する
   timeout="20"
   ;
};


 認証サーバのURL:"https://authenticate_server.fujitsu.com:10443/ssoatcag"
 サービスIDファイルの絶対パス名:"/home/jaastest/javaapi/domainsid"

/**
 *  sample login config file
 */

/* This sample does not use Business server configuration. */
com.fujitsu.interstage.sso{
   com.fujitsu.interstage.sso.auth.module.ISLoginModule required
   authserver="https://authenticate_server.fujitsu.com:10443/ssoatcag"  <− ここを編集する
   serviceidpath="/home/jaastest/javaapi/domainsid"  <− ここを編集する
   timeout="20"
   ;
};

(7) セキュリティポリシーファイルの編集

JDK1.3の場合

 セキュリティポリシーファイルisssojaasauth.policyを編集します。サンプルのセキュリティポリシーファイルでは、ユーザID"guest"にプロパティjava.homeの読み込み権、ロール名"administrator"にプロパティuser.homeの読み込み権の認可が設定されています。この部分をSSOリポジトリに登録されているユーザ名およびロール名に変更します。

 以下にユーザID"tarou"へプロパティjava.homeの読み込み権、ロール"Admin"へプロパティuser.homeの読み込み権を認可する例を示します。

/* sample policy file */

grant codeBase "file:isssoaction.jar" ,
  principal com.fujitsu.interstage.sso.auth.ISUserPrincipal "tarou" {  <− ユーザID
    permission java.util.PropertyPermission "java.home","read";
};

grant codeBase "file:isssoaction.jar" ,
  principal com.fujitsu.interstage.sso.auth.ISRolePrincipal "Admin" { <− ロール名
    permission java.util.PropertyPermission "user.home","read";
};

JDK1.4の場合

 セキュリティポリシーファイルisssojaas14.policyを編集します。サンプルのセキュリティポリシーファイルでは、ユーザID"guest"にプロパティjava.homeの読み込み権、ロール名"administrator"にプロパティuser.homeの読み込み権の認可が設定されています。この部分をSSOリポジトリに登録されているユーザ名およびロール名に変更します。

 以下にユーザID"tarou"へプロパティjava.homeの読み込み権、ロール"Admin"へプロパティuser.homeの読み込み権を認可する例を示します。

/* sample policy file */

grant codeBase "file:isssoaction.jar" ,
principal com.fujitsu.interstage.sso.auth.ISUserPrincipal "tarou" { <− ユーザID
permission java.util.PropertyPermission "java.home","read";
};

grant codeBase "file:isssoaction.jar" ,
principal com.fujitsu.interstage.sso.auth.ISRolePrincipal "Admin" { <− ロール名
permission java.util.PropertyPermission "user.home","read";
};

grant codeBase "file:isssojaas.jar" {
permission java.util.PropertyPermission "java.home","read";
permission java.util.PropertyPermission "user.home","read";
permission javax.security.auth.AuthPermission
"createLoginContext.com.fujitsu.interstage.sso";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.PrivateCredentialPermission
"com.fujitsu.interstage.sso.auth.ISAuthenticationCredential
com.fujitsu.interstage.sso.auth.ISUserPrincipal \"*\"", "read";
permission javax.security.auth.PrivateCredentialPermission
"com.fujitsu.interstage.sso.auth.ISAuthorizationCredential
com.fujitsu.interstage.sso.auth.ISUserPrincipal \"*\"", "read";
};


grant codeBase "file:C:\\Interstage\\F3FMsso\\ssoatzag\\lib\\isssomod14.jar" {
 ・・・
};


grant codeBase "file:/opt/FJSVssoaz/lib/isssomod14.jar" {
 ・・・
};

(8) サンプルコードの実行

 起動方法の例を以下に示します。

JDK1.3の場合


 トラストストアファイル名:"C:\Interstage\etc\security\env\keystore\.keystore"

C:\>cd C:\Interstage\F3FMsso\ssoatzag\sample\javaapi
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>set CLASSPATH=
C:\Interstage\J2EE\lib\jsse.jar;C:\Interstage\J2EE\lib\jcert.jar;
C:\Interstage\J2EE\lib\jnet.jar;C:\Interstage\J2EE\lib\isj2ee.jar;
C:\Interstage\F3FMsso\ssoatzag\lib\isssomod.jar;
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaas.jar;
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssoaction.jar
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>java
-Djava.security.auth.login.config=C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaaslogin.conf
-Djava.security.manager
-Djava.security.policy=C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaas.policy
-Djava.security.auth.policy=C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaasauth.policy
-Djavax.net.ssl.trustStore=C:\Interstage\etc\security\env\keystore\.keystore sample.ISSsoJaas


トラストストアファイル名:"/etc/opt/FJSVisas/security/env/keystore/.keystore"

# sh
# CLASSPATH=
/opt/FJSVj2ee/lib/jsse.jar:/opt/FJSVj2ee/lib/jcert.jar:/opt/FJSVj2ee/lib/jnet.jar:
/opt/FJSVj2ee/lib/isj2ee.jar:/opt/FJSVssoaz/lib/isssomod.jar:
isssojaas.jar:isssoaction.jar
# export CLASSPATH
# java -Djava.security.auth.login.config=isssojaaslogin.conf
-Djava.security.manager -Djava.security.policy=isssojaas.policy
-Djava.security.auth.policy=isssojaasauth.policy
-Djavax.net.ssl.trustStore=/etc/opt/FJSVisas/security/env/keystore/.keystore sample.ISSsoJaas

JDK1.4の場合


トラストストアファイル名:"C:\Interstage\etc\security\env\keystore\.keystore"

C:\>cd C:\Interstage\F3FMsso\ssoatzag\sample\javaapi
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>set CLASSPATH=
C:\Interstage\F3FMsso\ssoatzag\lib\isssomod14.jar;
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaas.jar;
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssoaction.jar
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>java
-Djava.security.auth.login.config=C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaaslogin.conf
-Djava.security.manager
-Djava.security.policy=C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\isssojaas14.policy
-Djavax.net.ssl.trustStore=C:\Interstage\etc\security\env\keystore\.keystore sample.ISSsoJaas


トラストストアファイル名:"/etc/opt/FJSVisas/security/env/keystore/.keystore"

# sh
# CLASSPATH=
/opt/FJSVssoaz/lib/isssomod14.jar:isssojaas.jar:isssoaction.jar
# export CLASSPATH
# java -Djava.security.auth.login.config=isssojaaslogin.conf
-Djava.security.manager
-Djava.security.policy=isssojaas14.policy
-Djavax.net.ssl.trustStore=/etc/opt/FJSVisas/security/env/keystore/.keystore
sample.ISSsoJaas

(9) サンプルアプリケーションの実行結果

 サンプルアプリケーションの実行結果は以下のようになります。"UserName="とプロンプトが出力されたら認証サーバに登録されているユーザIDを入力します。"Password="とプロンプトが出力されたらユーザのパスワードを入力します。認証に成功するとユーザの認証情報が出力されます。認証サーバ、リポジトリサーバの設定や実行ユーザ環境によって出力される内容が若干異なります。


 ユーザ"tarou"が"Admin"ロールに属している場合

UserName=tarou
Password=tarou

*** Credential Information ***
AuthorizationCredential=AZEer+r5szu3Ha8Vw1kSGNMw13D1K92da9WvEtqo5Kf5niUzaAX/psy6
zsl2A6d6FBzIsw7NeTkhBdjhq1Z506GaprHQ2zfqhWIzItto3x9dzSo2wQev/v4wn3Vc53lpWA/vMqkj
oMeVjQssloKIJfcF6gWBEHawuLDr1cwyx8VCE1+CPa+BtV4=
Dn=cn=Fujitsu Tarou,ou=User,o=Interstage,c=jp
Uid=tarou
Role=Admin
ClientAddress=10.124.60.139/10.124.60.139
AuthMethod=basicAuth
AuthTime=Fri Feb 07 22:05:51 JST 2003
Expiration=Fri Feb 07 22:35:51 JST 2003
AuthenticationCredential=AXxhZV2oLofk7oFq6IkF06A0llYtSSTdUyw1zE0Fd8r/YDWBJtqfjAB
NuiT8w2BDIW6C6gM42Py2Nf2/foyBIZLFBaxNc+QUmcDeJivnHARWascnFc/GlpS0bCz4ZpXzgZ6FU0i
sk1QBdAWERggu11wZx5RFP/vs9zQ5eJlGaRf6FtbN1iU7DPY=

*** Principals Information ***
Principal=tarou
Principal=CN=Fujitsu Tarou, OU=User, O=Interstage, C=jp
Principal=Admin


*** Execute PrivilegedAction ***
java.home=C:\Interstage\JDK13\jre
user.home=C:\Documents and Settings\jaastest


*** Execute PrivilegedAction ***
java.home=/opt/FJSVawjbk/jdk13/jre
user.home=/home/jaastest

 ユーザ"tarou"が"Admin"ロールに属していない場合

UserName=tarou
Password=tarou

*** Credential Information ***
AuthorizationCredential=AR1Z/CEv51vGO1kNAN7QCR+46c1f28tz6VZYOPtWmh4BBaTN3AzwshGR
7t+v2Lpj4NNHh+N09f7B5T6tdLQoTd6aInP49i0t1WsI7Ili0dhwTktciL5UCgwrCciD5WObi2LRxtJq
XVsiBnmmByrfsLW+amOKw4x4w+wPwSWUyVJVvRStpu4v2l7qwjrGxxFGLg==
Dn= cn=Fujitsu Tarou,ou=User,o=Interstage,c=jp
Uid=tarou
Role=General
ClientAddress=10.124.60.139/10.124.60.139
AuthMethod=basicAuth
AuthTime=Fri Feb 07 23:57:27 JST 2003
Expiration=Sat Feb 08 00:27:27 JST 2003
AuthenticationCredential=ARKQJjmtWxGlOg9aOKtANmo/gqI52Xv5iVVIxjqAHKclcQmtSYFS0Qd
OBe/vQqGfAy4a9zZAstbyKzVtlhOsWQyAUxUnZ/PU7HX9JD0WEJwBIT3vD4CRfTZ+qA9yhyqcJYyZAb2
/VFbqaMqDYhj2ajwIUG4kHTQS9Up7HyYmtD12ZOxXmvPiClFBrgfT0LXlpg==

*** Principals Information ***
Principal=tarou
Principal=CN=Fujitsu Tarou, OU=User, O=Interstage, C=jp
Principal=General


*** Execute PrivilegedAction ***
java.home=C:\Interstage\JDK13\jre
This user does not have a permission to read user.home property


*** Execute PrivilegedAction ***
java.home=/opt/FJSVawjbk/jdk13/jre
This user does not have a permission to read user.home property


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005