シングル・サインオンJavaAPIのサンプルコードの利用方法について説明します。
本サンプルを実行する前に、“第2章 環境構築(SSO管理者編)”、“第3章 環境構築(業務サーバ管理者編)”で構築したInterstage シングル・サインオン環境が必要です。
サンプルコードの概要
本サンプルは、クライアントからすでに認証済みであることを証明する認証情報を受け取り、認証した利用者の情報を表示するサーブレットアプリケーションです。本サンプルを動作させるためにはサーブレットと連携するWebサーバを業務サーバとして構築しておく必要があります。
URL | アプリケーション | 保護リソース登録 |
http(s)://業務サーバ名:ポート番号/jaassample/SampleServlet | クライアントから認証情報を受け取るサーブレットアプリケーション | 必要 |
サンプルコードの格納場所
サンプルコードは以下のディレクトリに格納されています。以降、サンプルディレクトリと呼びます。
Interstageのインストールディレクトリ:C:\Interstage
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi
/opt/FJSVssoaz/sample/javaapi
サンプルコードの実行に必要なファイルは以下のとおりです。
ファイル名 | 説明 |
jaassample.war | warファイル |
webapp/jaassample/WEB-INF/isssojaaslogin.conf | サーブレットログイン構成ファイル |
webapp/jaassample/WEB-INF/web.xml | Webアプリケーション環境定義ファイル(Deployment Descriptor) |
SampleServlet.java | サーブレットjavaソースファイル |
GlassFish Serverクラスターの運用ユーザーが、業務サーバの定義に対する読み込みができるように、以下の設定をしてください。
useraddコマンドなどでGlassFish Serverクラスターの運用ユーザーを新規作成してください。
Interstage HTTP Server 2.4の環境定義ファイル(httpd.conf)のUserディレクティブに指定されているユーザのファイルアクセス権限と同じユーザ権限を、作成したユーザにも与えてください。
テキストエディタでhttpd.confのUserディレクティブに1.で作成したユーザ名を指定してください。(注1)
Interstage管理コンソールを使用して、[システム] > [セキュリティ] > [シングル・サインオン] > [業務システム] > [業務システム名] > [環境設定]タブの[詳細設定[表示]]をクリックし、[Webサーバの設定]の[使用しているWebサーバの情報]の[実効ユーザ名]にWebサーバの定義ファイルに設定した実効ユーザ名を設定し、[適用]ボタンをクリックしてください。(注2)
注1)Interstage HTTP Server 2.4の環境定義ファイルの詳細については、“Interstage HTTP Server 2.4 運用ガイド”-“チューニング”-“環境定義”-“環境定義ファイル(httpd.conf)”を参照してください。
注2)詳細は“■業務サーバのWebサーバの実効ユーザを変更する場合”を参照してください。
Webコンテナへサーブレットアプリケーションを配備します。配備にはasadminコマンドを使用します。ここでは、GlassFish Serverクラスター“Cluster001”に配備する場合を例に説明します。GlassFish Serverクラスターの詳細については、“GlassFish 設計・構築・運用ガイド”の“Jakarta EEアプリケーション実行環境の提供機能”-“GlassFish Serverクラスター”を参照してください。
GlassFish Serverクラスター“Cluster001”が作成されていない場合には、“Cluster001”という名前で新規作成してください。
GlassFish Serverクラスターの作成は、asadminコマンドにcreate-clusterサブコマンドを指定して行います。
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin create-cluster Cluster001 |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin create-cluster Cluster001 |
GlassFish Serverインスタンスを作成してください。ここでは、GlassFish Serverインスタンス“instance1”を作成する場合を例に説明します。
GlassFish Serverインスタンスの作成は、asadminコマンドにcreate-local-instanceサブコマンドを指定して行います。
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin create-local-instance --cluster Cluster001 instance1 |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin create-local-instance --cluster Cluster001 instance1 |
作成したGlassFish Serverクラスターと連携するWebサーバコネクタを設定してください。ここではデフォルトのWebサーバ“FJapache”と連携する場合を例に説明します。
Webサーバコネクタの設定は、asadminコマンドにcreate-web-server-refサブコマンドを指定して行います。
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin create-web-server-ref --target Cluster001 FJapache |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin create-web-server-ref --target Cluster001 FJapache |
サーブレットアプリケーションを配備してください。
サンプルアプリケーションは、以下に格納されています。
Interstageのインストールディレクトリ:C:\Interstage
C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\jaassample.war
/opt/FJSVssoaz/sample/javaapi/jaassample.war
アプリケーション配備時に以下のクラスパスの設定も行ってください。
Interstageのインストールディレクトリ:C:\Interstage
クラスパス
C:\Interstage\F3FMsso\ssoatzag\lib\isssomod14.jar |
クラスパス
/opt/FJSVssoaz/lib/isssomod14.jar |
サーブレットアプリケーションの配備は、asadminコマンドにdeployサブコマンドを指定して行います。
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin deploy --libraries C:\Interstage\F3FMsso\ssoatzag\lib\isssomod14.jar --target Cluster001 C:\Interstage\F3FMsso\ssoatzag\sample\javaapi\jaassample.war |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin deploy --libraries /opt/FJSVssoaz/lib/isssomod14.jar --target Cluster001 /opt/FJSVssoaz/sample/javaapi/jaassample.war |
サンプルアプリケーションの配備されるディレクトリは、以下のディレクトリです。
C:\Interstage\glassfish5\var\domains\domain1\applications\jaassample |
/var/opt/FJSViaps/glassfish5/domains/domain1/applications/jaassample |
アプリケーションを配備したGlassFish ServerクラスターのJVMオプションを変更します。
JVMオプション | 変更後の値 |
java.security.auth.login.config | C:\Interstage\glassfish5\var\domains\domain1\applications\jaassample\WEB-INF\isssojaaslogin.conf /var/opt/FJSViaps/glassfish5/domains/domain1/applications/jaassample/WEB-INF/isssojaaslogin.conf |
JVMオプションの変更は、以下の手順で行ってください。
JVMオプションの削除
asadminコマンドにdelete-jvm-optionsサブコマンドを指定して、JVMオプション“java.security.auth.login.config”を削除してください
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin delete-jvm-options --target Cluster001 \-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin delete-jvm-options --target Cluster001 '\-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf' |
JVMオプションの追加
asadminコマンドにcreate-jvm-optionsサブコマンドを指定して、JVMオプション“java.security.auth.login.config”を追加してください
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin create-jvm-options --target Cluster001 \-Djava.security.auth.login.config="C\:\\Interstage\\glassfish5\\var\\domains\\domain1\\applications\\jaassample\\WEB-INF\\isssojaaslogin.conf" |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin create-jvm-options --target Cluster001 \-Djava.security.auth.login.config='/var/opt/FJSViaps/glassfish5/domains/domain1/applications/jaassample/WEB-INF/isssojaaslogin.conf' |
サーブレットアプリケーションを運用する業務サーバの業務システム名を設定してください。(2)で配備されたサーブレットアプリケーションに含まれているログイン構成ファイルisssojaaslogin.confのbusiness-system-nameの値をテキストエディタで編集します。
ログイン構成ファイルがデフォルトで配備されるパス名
Interstageのインストールディレクトリ:C:\Interstage
C:\Interstage\glassfish5\var\domains\domain1\applications\jaassample\WEB-INF\isssojaaslogin.conf |
/var/opt/FJSViaps/glassfish5/domains/domain1/applications/jaassample/WEB-INF/isssojaaslogin.conf |
サーブレットアプリケーションが動作する業務サーバの業務システム名が“Business001”の場合のログイン構成ファイルの例です。
エントリ“com.fujitsu.interstage.sso”はクライアントから認証情報を受け取るサーブレットアプリケーションで使用します。
/** * sample login config file */ com.fujitsu.interstage.sso{ com.fujitsu.interstage.sso.auth.module.ISCredentialLoginModule required business-system-name=”Business001” <- ここを編集する ; }; |
SSO管理者は、サーブレットアプリケーションのURLを、保護リソースとしてSSOリポジトリへ登録します。
Interstage管理コンソールを使用して、[システム] > [セキュリティ] > [シングル・サインオン] > [認証基盤] > [リポジトリサーバ] > [保護リソース]を開くと、[保護リソース]ツリーの配下に定義されているサイトの一覧が表示されますので、サンプルアプリケーションを配備した業務サーバのサイト定義をクリックしてください。
ツリーで[保護パス]をクリックするとパス定義の一覧画面が表示されますので、[新規作成]タブを選択してください。
アクセス制御の対象とするパスとして、[パス]に“/jaassample/SampleServlet”を入力します。そして、保護リソースを利用することができるロール名のチェックボックスを選択してください。
[作成]ボタンをクリックすると、一覧に設定したパス、およびロール情報が表示されますので確認してください。
サーブレットアプリケーションのURL
http(s)://業務サーバ名:ポート番号/jaassample/SampleServlet |
登録する保護リソース
業務サーバ名:ポート番号/jaassample/SampleServlet |
登録する保護リソース:www.fujitsu.com:80/jaassample/SampleServlet
保護リソースを利用することができるロール名:Admin
保護リソースを登録する前に、業務サーバのサイト定義“www.fujitsu.com:80”、およびロール定義がSSOリポジトリに登録されている必要があります。登録されていない場合は、“2.3.2.2 LDIFファイルを使用する場合”、および“2.6.3 保護リソースなどの登録”を参照し、登録を行ってください。
業務サーバ管理者は(5)で登録した保護リソースの情報を業務サーバに格納します。Interstage管理コンソールを使用して、[システム] > [セキュリティ] > [シングル・サインオン] > [業務システム] > [業務システム名] > [アクセス制御情報の更新]タブの[更新]ボタンをクリックしてください。Interstage管理コンソールの定義詳細については、Interstage管理コンソールのヘルプを参照してください。アクセス制御情報の更新については“4.6.1 ロール定義の変更、追加”、および“4.6.2 保護リソースの変更”を参照してください。
業務サーバ管理者は、Interstage管理コンソールを使用して、[システム] > [セキュリティ] > [シングル・サインオン] > [業務システム] > [業務システム名] > [環境設定]タブの[詳細設定[表示]]をクリックし、[Webアプリケーションとの連携]の[ユーザ情報の通知]の設定を“通知する”にして[適用]ボタンをクリックしてください。
セションの管理を行う場合、業務サーバ管理者は、Interstage管理コンソールを使用して、[システム] > [セキュリティ] > [シングル・サインオン] > [業務システム] > [業務システム名] > [環境設定]タブの[詳細設定[表示]]をクリックし、[シングル・サインオンJavaAPI]の[シングル・サインオンJavaAPIの使用]の設定を“使用する”にして[適用]ボタンをクリックしてください。
業務サーバを再起動します。業務サーバの起動、および停止手順については、“4.1.3 業務サーバの起動”、または“4.2.3 業務サーバの停止”を参照してください。
アプリケーションを配備したGlassFish Serverクラスターを起動します。
GlassFish Serverクラスターの起動は、asadminコマンドにstart-clusterサブコマンドを指定して行ってください。
Interstageのインストールディレクトリ:C:\Interstage
C:\>C:\Interstage\glassfish5\glassfish\bin\asadmin start-cluster Cluster001 |
#/opt/FJSViaps/glassfish5/glassfish/bin/asadmin start-cluster Cluster001 |
Webブラウザで業務サーバ上の以下のURLを指定します。
業務サーバが“www.fujitsu.com:80”でSSL通信している場合
https://www.fujitsu.com:80/jaassample/ |
業務サーバが“www.fujitsu.com:80”で非SSL通信している場合
http://www.fujitsu.com:80/jaassample/ |
Webブラウザに、“SSO Authentication”が表示されます。
“SSO Authentication”をクリックすると、証明書選択画面やフォーム認証ページまたは基本認証画面が表示されますので、(5)で設定した保護リソースを利用できるロールに属するユーザの証明書を選択するか、ユーザID/パスワードを入力してください。認証に成功すると、Webブラウザ画面に認証したユーザの認証情報が表示されます。
以下に実行例を示します。
ロール“Admin”に属する利用者“tarou”で認証が成功した場合
com.fujitsu.interstage.sso.auth.ISUserPrincipal tarou javax.security.auth.x500.X500Principal CN=Fujitsu Tarou,OU=User,OU=interstage,O=fujitsu,DC=com com.fujitsu.interstage.sso.auth.ISRolePrincipal Admin |
Webブラウザ画面に「No cookie information」が表示される場合、業務サーバのシングル・サインオンJavaAPIの設定が変更されていません。実行手順を確認し、設定を変更してください。