Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド

第 4 章 セキュリティーの問題

この章では、セキュリティー設定の結果として発生する可能性のある、次の問題について説明しています。

java.security.AccessControlException: アクセス拒否エラー

説明

次のエラーが、アプリケーションクライアントから、または server.log 内で発生します。

java.security.AccessControlException: access denied
(java.util.PropertyPermission name write...

ポリシーファイルにアクセス権の問題があります。アプリケーションクライアント用の client.policy またはサーバー側コンポーネント用の server.policy のいずれかに、プロパティーを設定するためのアクセス権がありません。

解決法

プロパティーを設定する必要があるアプリケーション用に、client.policy (アプリケーションクライアントの場合) または server.policy (EJB/Web モジュールの場合) でアクセス権を追加します。デフォルトでは、アプリケーションにはプロパティーの「読み取り」権しかありません。

たとえば、コードベースディレクトリ内のすべてのファイルに対する読み取り/書き込み権を付与するには、client.policy または server.policy に次の内容を追加または付加します。

grant codeBase "file:/.../build/sparc_SunOS/sec/-" {
   permission java.util.PropertyPermission "*", "read,write";
 };

javax.ejb.AccessLocalException: 承認されていないクライアントエラー

説明

Sun 固有の XML (たとえば、sun-ejb-jar.xml) でロールマッピング情報を利用でき、認証も成功しますが、次のエラーメッセージが表示されます。

[...INFO|sun-appserver-pe8.0|javax.enterprise.system.container.ejb|...|
javax.ejb.AccessLocalException: Client not authorized for this invocation.
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:...
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(...)

解決法

EJB モジュール (.jar) または Web モジュール (.war) がアプリケーションにパッケージ化 (.ear) され、アプリケーションレベルで Sun 固有の sun-application.xml にロールマッピング情報を持っているかどうかチェックします。どのアプリケーション (.ear) でも、セキュリティーロールマッピング情報が sun-application.xml に指定されている必要があります。モジュールレベル XML とアプリケーションレベル XML の両方が設定されていてもかまいません。

Solaris レルムで認証が機能していない

インストールおよびサーバー起動が root ユーザーとしてではなく、ローカルユーザーとして実行されたかどうかチェックします。Solaris レルムは root ユーザーでのみ機能するため、Application Server は必ず root ユーザーとして起動してください。ほかのローカルユーザーでは、機能するように設計されていません。ローカルユーザーではロールマッピングが発生する可能性がある、ということにも注意してください。

アプリケーションクライアントで相互認証が機能していない

説明

この障害は、KeyStore と TrustStore のプロパティーが正しく設定されていない場合に発生する可能性があります。

解決法

JVM に次のプロパティーを設定します。

javax.net.ssl.keyStore=
<keystore-file-path\>;javax.net.ssl.trustStore=<truststore-file-path\>

アプリケーションクライアントを使用するには、環境変数 VMARGS を次の値に設定します。

-Djavax.net.ssl.keyStore=
${admin.domain.dir}/${admin.domain}/config/keystore.jks
-Djavax.net.ssl.trustStore=
${admin.domain.dir}/${admin.domain}/config/cacerts.jks