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

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

6.1.2.5 認可の実行

 JAAS認証に成功した場合、Subjectオブジェクトを利用してJAASの認可機能を使用することができます。

 JAASの認可機能は、シングル・サインオンの認可機能であるWebサーバで公開している資源のアクセス制御を行うものではなく、認証された利用者のプリンシパル情報に基づき、Javaアプリケーションの処理の実行に対して、アクセス制御を行うことができます。

 シングル・サインオンJavaAPIでは、プリンシパル情報をユーザID、ロール名、およびSSOリポジトリの一意の識別名と定義しています。アクセス制御には、Javaセキュリティマネージャを利用します。Javaセキュリティマネージャについては、Sun Microsystems,Inc.から提供されているJava セキュリティアーキテクチャのドキュメントを参照してください。

 ここでは、サンプルコードISSsoAction.javaの例を用いて処理を説明します。このクラスは、java.security.PrivilegedActionを実装し、runメソッドは認証された利用者として実行されます。

import java.security.AccessControlException;
import java.security.PrivilegedAction;

public class ISSsoAction implements PrivilegedAction{
  public Object run() {
    try{
      System.out.println("java.home=" + System.getProperty("java.home"));
    }catch(AccessControlException ex){
      System.out.println("This user does not have a permission to " +
        "read java.home property");
    }
    try{
      System.out.println("user.home=" + System.getProperty("user.home"));
    }catch(AccessControlException ex){
      System.out.println("This user does not have a permission to " +
        "read user.home property");
    }
    return null;
  }
}

 SubjectのdoAsメソッドに対して、Subjectオブジェクトと上記のクラスのインスタンスを渡すことによりrunメソッドがプリンシパル情報のアクセス権に従って実行されます。コードを以下に示します。

PrivilegedAction myAction = new ISSsoAction();
subject.doAs(subject, myAction);

 プリンシパル情報にアクセス権を与えるにはセキュリティポリシーファイルを記述します。セキュリティポリシーファイルについては“セキュリティポリシーファイルの作成”を参照してください。

■ロールセットによる認可について

 JAASの認可機能では、ロールセット名による認可を行うことはできません。Javaアプリケーションでは、認証された利用者がロールセットに属する場合、ロールセットに含まれるロール名によって認可が実行されます。

■再認証の間隔を考慮した認可について

 JAASの認可機能では、認証サーバで認証された利用者の認証情報に含まれている再認証の間隔を考慮した認可を行うことはできません。Javaアプリケーションでは、ISAuthorizationCredentialオブジェクトのgetExpirationメソッドを使用して再認証の間隔を取得し、再認証の間隔のチェックを行うことができます。


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

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