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

第6章 アプリケーションの開発> 6.1 Javaアプリケーションの開発> 6.1.2 プログラムの開発

6.1.2.4 利用者情報の取得

 JAAS認証に成功した場合、LoginContextをインスタンス化する際に指定したSubjectオブジェクトに対して以下のオブジェクトが関連付けられます。

 認証情報を表すオブジェクトはSubjectオブジェクトの以下のメソッドで取得することができます。

 getPrivateCredentials()メソッドはSubjectオブジェクトに関連付けられているすべてのCredentialオブジェクトの集合を取得できます。getPrivateCredentials(Class c)メソッドは、Subjectオブジェクトに関連付けられているすべてのCredentialオブジェクトのうち、Classクラス、またはそのサブクラスのオブジェクトの集合を取得できます。関連付けられるオブジェクトのクラスを以下に示します。

クラス名

説明

com.fujitsu.interstage.sso.auth.ISAuthorizationCredential

SSO認証済み情報(Cookieから取得される値)、および認証情報内の情報を保持します。

 コードを以下に示します。

Set credentials = subject.getPrivateCredentials();
// display credential information
Iterator iterator = credentials.iterator();
while (iterator.hasNext()) {
  // 認証情報を参照する処理
  if (credential instanceof ISAuthorizationCredential){
  }
}

 PrincipalオブジェクトはSubjectオブジェクトの以下のメソッドで取得することができます。

 この2つのメソッドの違いはgetPrivateCredentialsメソッドと同様です。関連付けられるオブジェクトのクラスを以下に示します。

クラス名

説明

com.fujitsu.interstage.sso.auth.ISUserPrincipal

認証された利用者のユーザIDを表します。

com.fujitsu.interstage.sso.auth.ISRolePrincipal

利用者が属するロール名を表します。利用者がロールセットに属する場合、ロールセットに含まれるロールがそれぞれISRolePrincipalのオブジェクトとして関連付けられます。このオブジェクトは利用者がロールに属さない場合は設定されません。

JDK1.3の場合
com.sun.security.auth.X500Principal
JDK1.4の場合
javax.security.auth.x500.X500Principal

利用者のSSOリポジトリ内の一意の識別名(DN)を表します。
JDK1.3とJDK1.4ではjava.security.PrincipalインタフェースのgetNameメソッドの実装に差異があります。getNameメソッドを使用する場合には以下の差異に注意して開発してください。
・JDK1.3の場合 DNの区切り文字(カンマ)の直後に半角スペースが1文字挿入されます。
・JDK1.4の場合 DNの区切り文字(カンマ)の直後に半角スペースが1文字挿入されません。

例)getNameメソッドで返される値

JDK1.3の場合
CN=Fujitsu Tarou, OU=User, OU=interstage, O=fujitsu, DC=com

JDK1.4の場合
CN=Fujitsu Tarou,OU=User,OU=interstage,O=fujitsu,DC=com

 コードを以下に示します。

Set principals = subject.getPrincipals();
iterator = principals.iterator();
while (iterator.hasNext()) {
  Principal principal = (Principal)iterator.next();
  System.out.println("Principal=" + principal.getName());
}

■通知される利用者情報について

 業務サーバの定義を使用して認証先の認証サーバを指定する場合、ISAuthorizationCredentialオブジェクト内に保持する以下の情報は、Interstage管理コンソールで設定する[ユーザの情報の通知]の設定を“する”にした場合に通知されます。

 [ユーザの情報の通知]については、Interstage管理コンソールを使用して、[システム] > [セキュリティ] > [シングル・サインオン] > [業務システム] > [業務システム名] > [環境設定]タブ > [詳細設定[表示]]をクリックし、[Webアプリケーションとの連携]の[ユーザの情報の通知]を確認してください。この設定の詳細については、Interstage管理コンソールのヘルプを参照してください。

 [ユーザの情報の通知]の設定の反映には、アプリケーションの再起動が必要です。アプリケーションがサーブレットアプリケーションの場合にはIJServerを再起動してください。ログイン構成については、“ログイン構成ファイルの作成”を参照してください。

■再認証の間隔が無期限のユーザ情報の通知について

 ISAuthorizationCredentialオブジェクトのgetExpirationメソッドを使用して再認証の間隔を取得できますが、再認証の間隔が無期限の場合には、getExpirationで取得される時刻とgetAuthTimeメソッドで取得される時刻は同じ値になります。


 JDK1.3の場合、かつSSOリポジトリ内の一意の識別名に英数字と記号以外の文字が含まれる場合、X500Principalオブジェクトは使用できません。ISAuthorizationCredentialオブジェクトのgetDNメソッドを使ってSSOリポジトリ内の一意の識別名を表す文字列オブジェクトを取得するか、JDK1.4を使用してください。


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

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