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

第7章 アプリケーションの開発> 7.1 Javaアプリケーションの開発> 7.1.3 アプリケーション実行環境の設定

7.1.3.4 セキュリティポリシーファイルの作成

 アプリケーション運用管理者は、JavaアプリケーションがJAASの認可機能を使用する場合、セキュリティポリシーファイルを作成します。セキュリティポリシーファイルのファイル名は任意で作成でき、アプリケーション実行時にシステムプロパティjava.security.policyでファイル名を指定します。セキュリティポリシーファイルの詳細については、Sun Microsystems,Inc.から提供されているJ2SDKやJAASのドキュメントを参照してください。

 セキュリティポリシーは基本的には以下の3つの付与エントリ形式で記述します。

1.すべてのコードに対してパーミッションを与えたい場合

grant{
    permission <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
    permission <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
    ...
};

2.コードベース単位でパーミッションを与えたい場合

grant codeBase <URL>{
    permission <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
    permission <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
    ...
};

3.利用者のプリンシパル単位でパーミッションを与えたい場合

grant codeBase <URL>,
      principal <Principalクラス名> "<プリンシパル名>",
      principal <Principalクラス名> "<プリンシパル名>",
      ... {
    permission <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
    permission <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
    ...
};

■エスケープ文字について

 セキュリティポリシーファイルのなかでは、(\)がエスケープ文字として扱われます。そのため、<URL>にパスを記述するとき、Windowsのファイルセパレータ(\)はエスケープ文字のため(\\)と指定します。

■セキュリティポリシーファイルのファイルエンコーディングについて

 セキュリティポリシーファイルに英数字と記号以外の文字を使用する場合、ファイルエンコーディングを以下のようにしてセキュリティポリシーファイルを保存してください。

■利用者のSSOリポジトリ内の一意の識別名単位でパーミッションを与える場合


 英数字と記号以外が使用されているSSOリポジトリ内の一意の識別名を使用してJAASの認可を行う場合、JDK1.3は使用できません。JDK1.4を使用してください。

ファイルの記述方法

 JAAS認可を行うアプリケーションで使用するセキュリティポリシーファイルの指定方法を以下にまとめます。JAAS認可機能を使用するためには、ユーザアプリケーションのうち、プリンシパルごとに処理しないコードとプリンシパルごとに処理するコードを分けてjarファイル化しておく必要があります。

jarファイル

指定方法

シングル・サインオンJavaAPIが使用するjarファイル(注1)

コードベース単位でパーミッションを与えます。

ユーザアプリケーションでプリンシパルごとに処理しないコードを含むjarファイル

コードベース単位で必要最小限のパーミッションを与えます。

ユーザアプリケーションでプリンシパルごとに処理するコードを含むjarファイル

利用者のプリンシパル単位で必要最小限のパーミッションを与えます。

注1)シングル・サインオンJavaAPIのjarファイルや、JSSEのjarファイルに関しては“環境変数の設定”のCLASSPATHの設定部分を参照してください。

 以下に“ユーザID/パスワードで認証と認可をするアプリケーション”で設定するセキュリティポリシーファイルの例を以下に示します。

JDK1.3の場合

 Javaアプリケーションのjarファイル:isssojaas.jar

grant codeBase "file:C:\\Interstage\\J2EE\\lib\\jsse.jar" {
grant codeBase "file:/opt/FJSVj2ee/lib/jsse.jar" {
 permission java.security.AllPermission;
};

grant codeBase "file:C:\\Interstage\\J2EE\\lib\\jcert.jar" {
grant codeBase "file:/opt/FJSVj2ee/lib/jcert.jar" {
 permission java.security.AllPermission;
};

grant codeBase "file:C:\\Interstage\\J2EE\\lib\\jnet.jar" {
grant codeBase "file: /opt/FJSVj2ee/lib/jnet.jar" {
 permission java.security.AllPermission;
};

grant codeBase "file:C:\\Interstage\\J2EE\\lib\\isj2ee.jar" {
grant codeBase "file:/opt/FJSVj2ee/lib/isj2ee.jar" {
 permission java.security.AllPermission;
};

grant codeBase "file:C:\\Interstage\\F3FMsso\\ssoatzag\\lib\\isssomod.jar" {
grant codeBase "file:/opt/FJSVssoaz/lib/isssomod.jar" {
 permission java.lang.RuntimePermission "loadLibrary.F3FMssojdec";
 ・・・
 permission javax.security.auth.PrivateCredentialPermission
  "com.fujitsu.interstage.sso.auth.ISAuthorizationCredential
 com.fujitsu.interstage.sso.auth.ISUserPrincipal \"*\"", "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";
 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";
};

 認証されたユーザに付加したアクセス権に従って処理を行うクラスを含むjarファイル:isssoaction.jar

grant codeBase "file:isssoaction.jar" ,
 principal com.fujitsu.interstage.sso.auth.ISUserPrincipal "guest" {
  permission java.util.PropertyPermission "java.home","read";
};

grant codeBase "file:isssoaction.jar" ,
 principal com.fujitsu.interstage.sso.auth.ISRolePrincipal "administrator" {
  permission java.util.PropertyPermission "user.home","read";
};

JDK1.4の場合

 Javaアプリケーションのjarファイル:isssojaas.jar
 認証されたユーザに付加したアクセス権に従って処理を行うクラスを含むjarファイル:isssoaction.jar

grant codeBase "file:isssoaction.jar" ,
 principal com.fujitsu.interstage.sso.auth.ISUserPrincipal "guest" {
  permission java.util.PropertyPermission "java.home","read";
};

grant codeBase "file:isssoaction.jar" ,
 principal com.fujitsu.interstage.sso.auth.ISRolePrincipal "administrator" {
  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 " {
 permission java.lang.RuntimePermission
  "accessClassInPackage.sun.net.www.protocol.https";
  ・・・
  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";
};


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

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