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

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

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

サンプルコードの概要

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

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

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

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

image image
 /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の環境変数を設定します。

image

JDK1.3の場合

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

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:\APW\JBK3\jdk
C:\>set PATH=%JAVA_HOME%\bin;%PATH%

image image

# 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

image

JDK1.4の場合

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

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

image image

# 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のドキュメントを参照してください。

image
image
 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>

image image
 作業用ディレクトリ:"/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ファイルはサンプルを実行する業務サーバに格納します。

 サービスIDファイルの作成の詳細については、“業務サーバのサービスIDファイルの作成”を参照してください。

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

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

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

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

(5)証明書の登録

 認証サーバがSSL環境で動作している場合、認証サーバまたは認証サーバの認証局から、サイト証明書または認証局の証明書を取得し、keytoolコマンドを使用してトラストストアを作成します。

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

image
image
 Interstageのインストールディレクトリ:デフォルト
 認証サーバの認証局証明書ファイル名:"A:\cacert.crt"
 トラストストアファイル名:"C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\mycacerts"
 トラストストアのパスワード:"changeit"

C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>keytool -import -file A:\cacert.crt -keystore C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\mycacerts
Enter keystore password: changeit
Owner: EmailAddress=address@abc.fujitsu.com, CN=Dev. Team CA, OU=1-1, O=FUJITSU LIMITED, L=Numazu, ST=Shizuoka, C=JP
Issuer: EmailAddress=address@abc.fujitsu.com, CN=Dev. Team CA, OU=1-1, O=FUJITSU LIMITED, L=Numazu, ST=Shizuoka, C=JP
Serial number: 0
Valid from: Tue Jul 02 11:27:03 JST 2002 until: Fri Jun 29 11:27:03 JST 2012
Certificate fingerprints:
MD5: 4B:0E:2B:35:61:0F:99:12:59:05:EF:F5:48:63:51:88
SHA1: 55:6B:7D:B8:3E:FD:A1:32:99:90:B9:D8:3E:60:36:BB:6D:62:CE:BC
Trust this certificate? [no]: yes
Certificate was added to keystore

C:\Interstage\F3FMsso\ssoatzag\sample\javaapi>

image image

 認証サーバの認証局証明書ファイル名:"/tmp/cacert.crt"
トラストストアファイル名:"/home/jaastest/javaapi/mycacerts"
トラストストアのパスワード:"changeit"

# keytool -import -file /tmp/cacert.crt -keystore /home/jaastest/javaapi/mycacerts
Enter keystore password: changeit
Owner: EmailAddress=address@abc.fujitsu.com, CN=Dev. Team CA, OU=1-1, O=FUJITSU LIMITED, L=Numazu, ST=Shizuoka, C=JP
Issuer: EmailAddress=address@abc.fujitsu.com, CN=Dev. Team CA, OU=1-1, O=FUJITSU LIMITED, L=Numazu, ST=Shizuoka, C=JP
Serial number: 0
Valid from: Tue Jul 02 11:27:03 JST 2002 until: Fri Jun 29 11:27:03 JST 2012

Certificate fingerprints:
MD5: 4B:0E:2B:35:61:0F:99:12:59:05:EF:F5:48:63:51:88
SHA1: 55:6B:7D:B8:3E:FD:A1:32:99:90:B9:D8:3E:60:36:BB:6D:62:CE:BC
Trust this certificate? [no]: yes
Certificate was added to keystore
#

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

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

image

image

 Interstageのインストールディレクトリ:デフォルト
 認証サーバのURL:"https://authenticate_server.fujitsu.com/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/ssoatcag"  <− ここを編集する
   serviceidpath="C:\\Interstage\\F3FMsso\\ssoatzag\\sample\\javaapi\\domainsid"  <− ここを編集する
   timeout="20"
   ;
};

image image
 認証サーバのURL:"https://authenticate_server.fujitsu.com/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/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の読み込み権を認可する例を示します。

image

/* 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の読み込み権を認可する例を示します。

image

/* 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";
};

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

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

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

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

image

JDK1.3の場合

image

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\F3FMsso\ssoatzag\sample\javaapi\mycacerts sample.ISSsoJaas

image image

# 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=mycacerts sample.ISSsoJaas

JDK1.4の場合

image

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\F3FMsso\ssoatzag\sample\javaapi\mycacerts sample.ISSsoJaas

image image

# 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=mycacerts sample.ISSsoJaas

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

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

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

UserName=tarou
Password=tarou

*** Credential Information ***
AuthorizationCredential=AZEer+r5szu3Ha8Vw1kSGNMw13D1K92da9WvEtqo5Kf5niUzaAX/psy6
zsl2A6d6FBzIsw7NeTkhBdjhq1Z506GaprHQ2zfqhWIzItto3x9dzSo2wQev/v4wn3Vc53lpWA/vMqkj
oMeVjQssloKIJfcF6gWBEHawuLDr1cwyx8VCE1+CPa+BtV4=
Dn=cn=Fujitsu Tarou,ou=SSO User,o=Fujitsu Limited,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=SSO User, O=Fujitsu Limited, C=jp
Principal=Admin

image
*** Execute PrivilegedAction ***
java.home=C:\APW\JBK3\jdk\jre
user.home=C:\Documents and Settings\jaastest

image image
*** 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=SSO User,o=Fujitsu Limited,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=SSO User, O=Fujitsu Limited, C=jp
Principal=General

image
*** Execute PrivilegedAction ***
java.home=C:\APW\JBK3\jdk\jre
This user does not have a permission to read user.home property

image image
*** 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) 富士通株式会社 2003