Interstage Application Server シングル・サインオン運用ガイド
|
目次
索引

|
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 <アクセス権クラス名> "<ターゲット名>", "<アクション名>";
...
}; |
- codeBaseフィールド
codeBaseの値<URL>には、コードが置かれる場所を示します。この場所からロードされたコードに対してアクセス権を付与します。codeBaseフィールドを省略した場合は、コードの出所に依存せずに、すべてのコードに対してアクセス権を設定することになります。
- principalフィールド
principalの値は <Principalクラス名>と <プリンシパル名>のペアを指定します。このペアが、実行中のスレッドのプリンシパルセット内にある場合にアクセス権を付与します。 プリンシパルセットは、Subject オブジェクトによって実行するコードに関連付けられます。principalフィールドを省略した場合は、すべてのプリンシパルに対してアクセス権を設定することになります。
- アクセス権エントリ
アクセス権エントリは、permissionから始まります。<アクセス権クラス名>には、java.util.PropertyPermissionやjava.io.FilePermissionなど、特定のアクセス権クラス名を指定します。アクセス権クラス名の後には必要に応じて<ターゲット名>、および<アクション名>を記述します。たとえば、java.util.PropertyPermissionでは、<ターゲット名>にシステムプロパティ名、<アクション名>には“read”、“write”などが指定できます。設定するアクセス権については、Sun Microsystems,Inc.から提供されているJ2SDKやJAASのドキュメントを参照してください。
■エスケープ文字について
セキュリティポリシーファイルのなかでは、(\)がエスケープ文字として扱われます。そのため、<URL>にパスを記述するとき、Windowsのファイルセパレータ(\)はエスケープ文字のため(\\)と指定します。
■セキュリティポリシーファイルのファイルエンコーディングについて
セキュリティポリシーファイルに英数字と記号以外の文字を使用する場合、ファイルエンコーディングを以下のようにしてセキュリティポリシーファイルを保存してください。
- JDK1.3の場合
JavaVMが使用するデフォルトのエンコーディング形式
- JDK1.4の場合
UTF-8エンコーディング形式、またはJavaVMが使用するデフォルトのエンコーディング形式
デフォルトエンコーディング形式を使用するためにはシステムプロパティsun.security.policy.utf8の値をfalseに指定する必要があります。
■利用者のSSOリポジトリ内の一意の識別名単位でパーミッションを与える場合
- JDK1.3の場合
プリンシパル名を構成するattributeType=attributeValueの間のカンマ(,)の後ろには、半角スペースを1文字、挿入してください。
grant codeBase "file:isssoaction.jar" , principal com.sun.security.auth.X500Principal "CN=Tarou, OU=User, OU=interstage, O=fujitsu, DC=com" { permission java.util.PropertyPermission "java.home","read";}; |
- JDK1.4の場合
プリンシパル名を構成するattributeType=attributeValueの間のカンマ(,)の後ろには、半角スペースを挿入しないでください。
grant codeBase "file:isssoaction.jar" , principal javax.security.auth.x500.X500Principal "CN=Tarou,OU=User,OU=interstage,O=fujitsu,DC=com" { permission java.util.PropertyPermission "java.home","read";}; |

英数字と記号以外が使用されている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
認証されたユーザに付加したアクセス権に従って処理を行うクラスを含む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