ナビゲーションをスキップ

WebLogic Server FAQ 集

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

FAQ : セキュリティ


Q. 互換性レルムと myrealm との違いは何ですか。各々のレルムはどういう環境下で使用すべきですか。

A. 6.x の config.xml ファイルを持っていて、WebLogic Server を起動する場合には、以下のレルムが生成されます。

詳細については、『WebLogic Security の管理』を参照してください。


Q. デフォルト グループ users および everyone は何のためのものですか。

A. userseveryone は、グローバル ロールとセキュリティ ポリシーを適用する場合に便利なグループです。すべての WebLogic Server ユーザは everyone グループのメンバーです。<anonymous> ユーザでない WebLogic Server ユーザだけが users グループのメンバーになります。

詳細については、『WebLogic Security の管理』を参照してください。


Q. ゲスト ユーザはまだありますか。

A. guest ユーザは、このリリースの WebLogic Server のデフォルトではサポートされていません。WebLogic Server バージョン 6.x では、guest はユーザの名前と匿名ログイン用の名前の両方でした。匿名ユーザ用の新しいユーザ名は <anonymous> です。WebLogic Server を下記のコマンドライン引数で起動すると、このユーザ名を変更できます。

-Dweblogic.security.anonymousUserName=newAnonymousUserName

この引数を使うと、下位互換性の目的のため、匿名ユーザの名前を guest にすることができます。

このリリースの WebLogic Server で、guest ユーザを用意したい場合には、デフォルト セキュリティ レルムの認証プロバイダにおいて名前 guest でユーザを作成し、そのユーザに guest のパスワードを付与します。コードが guest ユーザに依存する場合には、weblogic.security.WLSPrincipals のユーティリティ メソッドを利用するようにコードを書き直すことを検討したほうがよいでしょう。


Q. Web アプリケーションの中でフォーム ベースの認証用に追加フィールドを提供したいのです。どんなアプリケーション プログラミング インタフェース (API) を使用すべきでしょうか。

A. WebLogic 認証プロバイダの CallbackHandler 実装は、フォーム ベースの認証を使用する場合には文字列フィールド バージョンのユーザ名とパスワードのみをサポートしています。

Web アプリケーションで他の認証情報が必要な場合には、Web アプリケーションのコード内で LoginModule に対して JAAS Callback API の javax.security.auth.TextInputCallback インタフェースを使用してください。javax.security.auth.TextInputCallback インタフェースの実装には、メソッド コンストラクタへのプロンプトとして、認証フィールドの名前を使う必要があります。次に例を示します。

Callback[] callbacks=new Callback[1];
callbacks[1]=new TextInputCallback("TextField");

try{
callbackHandler.handle(callbacks)
textField1=((TextInputCallback)callbacks[2].getText
} catch (java.io.IOException ioe) {
throw new LoginException(ioe.toString());
}catch (UnsupportedCallbackException uce) {
throw new LoginException
("Error:"+uce.getCallback().toString() +
"not available to garner authentication information" +
"from the user");
}
//"textField1 が正しく設定されていない

ServletCallbackHandlerTextInputCallback を取得すると、コールバックは TextInputCallback のプロンプトに一致するフィールドを探します。一致するものがあった場合、コールバック ハンドラはその値をコールバックの中に設定します。一致するものが見つからなかった場合には、UnsupportedCallback 例外が送出されます。


Q. アプリケーションの中で 6.x のセキュリティ レルム API を使用しています。この機能をこのリリースの WebLogic Server のセキュリティ API にアップグレードするにはどうすればよいですか。

特に、security.getRealm() メソッドを使用していて、返されたレルムで getGroup()getGroups()、および getUser() メソッドを使用しています。

A. 互換性セキュリティを使うと、WebLogic Server 環境で 6.x のアプリケーションをそのまま使えます。

WebLogic Server の管理は、6.x においてレルムの直接呼び出しから MBean の利用へと大きく変更されました。この変更は、WebLogic Server にとって統一された管理モデルを作成する際の最初のステップでした。6.x で導入されたセキュリティ MBean はレルム用に定義された機能がミラーされましたが、セキュリティ ベンダが自分たちの製品と WebLogic Server とを統合するのには、柔軟性が不十分でした。このリリースの WebLogic Server では Security Service Provider Interface (SSPI) と Security SPI MBean のセットが提供されていて、これらを使うと、WebLogic Server 用のカスタム セキュリティ製品を記述することができます。これらの MBean は、アプリケーションを WebLogic Server 環境で使えるようにする目的で既存のアプリケーションの機能を複製するためにも使えます。

レルムのアップグレードを選択する場合、weblogic.management.security パッケージ内にある MBean の実装を記述することが必要となります。これらの MBean では、6.x のレルムに特化した管理メソッドを実装できます。weblogic.management.security パッケージ内の MBean の使い方については、『WebLogic Security サービスの開発』を参照してください。

下記は、セキュリティ レルムに基づいたアプリケーションをこのリリースの WebLogic Server で利用可能なセキュリティ アーキテクチャへアップグレードする際に役立つヒントです。

注意 : weblogic.security.acl パッケージは、このリリースの WebLogic Server では非推奨です。


 

表 20-1 インタフェース マッピング

6.x weblogic.security.acl パッケージのメソッド

対応する weblogic.management.security.
authentication パッケージのメソッド

newUser()

UserEditor.createUser()

deleteUser()

UserRemover.removeUser()

newGroup()

GroupEditor.createGroup()

deleteGroup()

GroupRemover.removeGroup()

Group.addMember()

GroupEditor.addMemberToGroup

Group.removeMember()

GroupEditor.removeMemberFromGroup()

Group.isMember()

GroupMemberLister.listGroupMembers() または SubjectUtils.isUserInGroup()

Group.members()

GroupMemberList.listGroupMembers()

userExists()

UserReader.isUser()

isGroupMember()

GroupReader.groupExists()GroupReader.isMember()


 

Q. WebLogic Server では、Diffie-Hellman または DSS/DSA のデジタル証明書がサポートされていますか。

A. いいえ。WebLogic の輸出可能バージョンでは、40 ビット RC4 を使用した 512 ビット RSA のみがサポートされています。また、ブラウザではそのような証明書はサポートされていませんし、DSA 証明書を商用ベースで発行している会社もありません。


Q. Weblogic Server デプロイメントで、RSA 証明書と非 RSA 証明書を同時に使用することはできますか。

A. いいえ。


Q. 非 RSA クライアント コードで RSA ライセンス コストを支払う必要がありますか。

A. WebLogic Server では、WebLogic Server と WebLogic クライアント間の SSL に対して RSA の使用を許可しています。WebLogic Server を使用する場合、RSA に関して他のライセンスは必要ありません。ただし、付加価値再販業者によって規約は異なります。


Q. WebLogic Server で Netscape セキュリティ証明書を使用するにはどうすればよいですか。

A. Netscape では、プライベート キーと公開鍵が 1 つのファイルに格納され、公開鍵とプライベート キーの分離が防止されます。したがって、Netscape ユーティリティを使用しないで別の証明書リクエストを生成する必要があります。


Q. サーブレットおよび JSP へのアクセスを制限する方法を教えてください。

Java Servlet API 仕様 v2.3 では、Web アプリケーションのデプロイメント記述子を使用して特定のサーブレットおよび JSP へのアクセスを制限できます。この仕様のセクション 13.3.2 には、宣言型のセキュリティを使用するサンプルのデプロイメント記述子があります。詳細については、『WebLogic HTTP サーブレット プログラマーズ ガイド』を参照してください。Administration Console を用いて、EJB および Web アプリケーションのロールを指定することもできます。詳細については、『WebLogic リソースのセキュリティ』を参照してください。


Q. RSA 暗号化アルゴリズムと javax.crypto.* API を使用してアプリケーションを構築できますか。

A. できません。WebLogic の RSA ライセンスは、エンド ユーザが RSA クラスを直接使用することを許可していません。RSA から暗号化ライブラリのライセンスを独自に取得する必要があります。


Q. JNDI 初期コンテキストを使用して、WebLogic Server ユーザのセキュリティ資格を渡すことができますか。

A. JNDI を使用してセキュリティ資格を渡す機能は 6.1 の WebLogic Server で非推奨となりました。このリリースの WebLogic Server でもこのメソッドを使用することはできます。しかし、ユーザをセキュリティ コンテキストに関連付ける場合、BEA では、JNDI ではなく Java Authentication and Authorization Service (JAAS) runAs() メソッドを使用することを推奨します。詳細については、『WebLogic Security プログラマーズ ガイド』を参照してください。


Q. WebLogic Server パスワードは安全ですか。

A. config.xml ファイルには、クリア テキスト形式のパスワードが存在しなくなりました。クリア テキスト形式のパスワードに代わって、config.xml ファイルには暗号化されたパスワードが格納されます。暗号化パスワードは、別のドメインにコピーできません。代わりに、config.xml ファイルを編集して、既存の暗号化パスワードをクリア テキスト パスワードに置き換えてから、そのファイルを新しいドメインにコピーします。Administration Console は、次にそのファイルに書き込むときにパスワードを暗号化します。


Q. WebLogic Server を起動するときに証明書コンフィグレーション エラーを受け取るのはなぜですか。

例 : Alert> <WebLogicServer> <Security> configuration problem with certificate file

A. SSL コンフィグレーション ファイルで WL_HOME 相対ファイル名を指定しなかった可能性があります。

詳細については、『WebLogic Security の管理』を参照してください。


Q. デモ用証明書を使用しているときに発信 SSL 接続を確立できないのはなぜですか。

A. SSL 接続を確立するときには、デジタル証明書のサブジェクトの DN が、SSL 接続を開始するサーバのホスト名と一致している必要があります。一致していないと、SSL 接続が中断されます。デモ用証明書を使用していると、このホスト名が一致しません。この状況を回避するには、WebLogic Server の起動時に次のコマンドライン引数を使用します。

-Dweblogic.security.SSL.ignoreHostnameVerification=true

この引数により、サブジェクトの DN とホスト名を比較するホスト名検証 (Hostname Verifier) が無効化されます。この解決策が推奨されるのは、開発環境においてのみです。さらにセキュアな解決策は、発信 SSL 接続を行うサーバ用に新しいデジタル証明書を取得することです。


Q. WebLogic Server への SSL 接続を確立するときに、コンフィグレーション エラーを受け取るのはなぜですか。

例 : <WebLogic Server> <SSLListenThread listening on port 8802> Failed to connect to t3s://localhost:8802.

SSL プロトコルのコンフィグレーションでの問題では、次の例外も送出されます。

<java.io.IOException: Write Channel Closed, possible handshaking or trust failure>

A. デフォルトでは、WebLogic Server にはデジタル証明書のサブジェクトの DN とホスト名を比較するホスト名検証が含まれています。SSL 接続を確立するときには、デジタル証明書のサブジェクトの DN が、SSL 接続を開始するサーバのホスト名と一致している必要があります。デモ用証明書を使用していると、このホスト名が一致しません。この状況を回避するには、WebLogic Server の起動時に次のコマンドライン引数を使用します。

-Dweblogic.security.SSL.ignoreHostnameVerification=true

この引数により、ホスト名検証が無効化されます。この解決策が推奨されるのは、開発環境においてのみです。さらにセキュアな解決策は、WebLogic クライアント用に新しいデジタル証明書を取得することです。

このリリースの WebLogic Server では、WebLogic クライアントは、WebLogic Server 用のデジタル証明書に関して信頼性のある認証局かどうかのチェックを行います。クライアントは、WebLogic Server のデジタル証明書がクライアントにとって信頼性のある認証局により発行されたものでない場合には、その証明書を拒絶しても構いません。以前のバージョンの WebLogic Server はこのチェックを行いませんでした。


Q. サーブレットから no certificate メッセージが返されるのはなぜですか。

A. WebLogic Server は、SSL ハンドシェーク中にクライアントにデジタル証明書を求める (相互 SSL と呼ばれる) ようにコンフィグレーションされていない限り、デジタル証明書を持ちません。このエラーを受け取るのは、WebLogic サーブレットまたは JSP がクライアントでピア検証を試行したときです。SSL をコンフィグレーションするときに WebLogic Server がクライアント証明書を要求するように、[クライアント証明書を強制] 属性を設定してください。


Q. カスタム セキュリティ プロバイダが表示されません。つまり、Administration Console で [新しい Security_Provider_Type のコンフィグレーション] リンクとして表示されません。

A. システム管理者が MBean JAR ファイル (MJF) を lib/mbeantype ディレクトリに置いていることを確認してください。


Q. Web アプリケーションの login-config で CLIENT-CERT を使用したときに 401 無権限ユーザ エラーが発生するのはなぜですか。

A. CLIENT_CERT の login-config を使用するには、次のことを確認します。

  1. サーバ上で双方向 SSL がコンフィグレーションされ、クライアント強制オプションが設定されている。
  2. Web アプリケーションに https を介してアクセスする。
  3. Web アプリケーションのデジタル証明書の CN 属性に対応するユーザは、デフォルト セキュリティ レルムのユーザとして定義され、セキュリティ レルムで ID アサーション プロバイダがコンフィグレーションされている。

CLIENT_CERT は、境界認証を使用する (デジタル証明書が http ヘッダまたは cookie を介して提示される) 場合にも適用されます。この場合、双方向 SSL と https は不要です。


Q. keytool を使用してデジタル証明書を ID キーストアにインポートすることができません。なぜですか。

A. keytool ユーティリティを使用して CSR (証明書署名要求) を作成すると、ID キーストアには自己署名デジタル証明書が格納されます。keytool コマンドを使用して、キーストア内の自己署名デジタル証明書を信頼性のある CA から取得した署名済みのデジタル証明書で置き換えようとすると、問題が発生する場合があります。署名済みのデジタル証明書をキーストアにインポートする前に、keytool ユーティリティを使用して信頼性のある CA 証明書をキーストアにインポートしてください。手順は次のとおりです。

  1. 信頼性のある CA 証明書を取得します。
  2. der2pem ユーティリティを使用して、信頼性のある CA 証明書を PEM ファイルに変換します。
  3. keytool ユーティリティを使用して、ID キーストアを作成します。次に例を示します。
  4. keytool -genkey -alias subjectkey -keypass keypassword -keystore nameofkeystore -storepass keystorepassphrase

  5. keytool の certreq コマンドを使用して CSR を作成し、この CSR を認証局に提示します。次に例を示します。
  6. keytool -certreq -alias subjectkey -keypass keypassword keystore nameofkeystore -storepass keystorepassphrase -file mycertificate.cer

  7. keytool の import コマンドを使用して、信頼性のある CA の PEM ファイルをキーストアにインポートします。
  8. keytool の import コマンドの -trustcacerts オプションを使用して、署名済みのデジタル証明書を認証局からキーストアにインポートします。

Q. プログラムを使用して WebLogic 認証プロバイダにユーザやグループを追加することはできますか。

A. weblogic.management.security.authentication クラスの createUser() インタフェースおよび createGroup() インタフェースを使用してください。


Q. WebLogic 資格マッピング プロバイダを使用する場合、匿名ユーザまたは認証されないユーザのマッピングを作成するにはどうしたらよいですか。

A. リソース コンテナを使用すると、状況に応じて特別なユーザ名が作成されます。認証された WebLogic ユーザがない場合 (つまり、Subject にユーザがないか、Subject が null の場合) は、wls_ra_anonymous というマッピングが使用されます。リソース コンテナには、リソース アダプタのプールの起動中に作成されたマッピング用の特別なマッピング (wls_ra_initial)、および指定した Subject に適用できるコンフィグレーション済みのマッピングがない場合のためのマッピング (wls_ra_default) も定義されています。


Q. セキュリティ レルム内で協調して動作する複数の認証プロバイダをコンフィグレーションするにはどうしたらよいですか。

A. サポートされている各種の認証プロバイダのログイン モジュールは、すべて JAAS 仕様に準拠しています。セキュリティ レルム内に 2 つの認証プロバイダをコンフィグレーションし、有効なユーザがどちらのプロバイダからでもシステムにログインできるようにするには、それぞれの認証プロバイダの JAAS 制御フラグを REQUISITE に設定します。


Q. アプリケーションで Java セキュリティを使用することはできますか。

A. はい。アプリケーション内部では、Java セキュリティだけでなく、JAAS 認可も使用できます。checkPermission() を始めとする Java セキュリティ呼び出しもすべて使用できます。一点だけ注意が必要なのは、アプリケーションがサーバから呼び出されるときの ID や CODEBASE が保証されない点です。すべてのエントリ ポイントにおいて、AccessController.doPrivileged() または Subject.DoAs() を使用して ID と CODEBASE を再確立する必要があります。


Q. Java セキュリティを使用する場合、アプリケーションのデフォルト パーミッションを変更するにはどうしたらよいですか。

A. Java セキュリティ ポリシー ファイルには、3 つのコンポーネント タイプごとに以下のような「偽の」CODEBASE があります。

EJB 用の "file:/weblogic/application/defaults/EJB"

Web アプリケーション用の "file:/weblogic/application/defaults/Web

コンテナ アプリケーション用の "file:/weblogic/application/defaults/Connector

これらの CODEBASE には、それぞれのタイプのアプリケーションに使用するデフォルトが含まれています。これらのデフォルトを評価する際は、アプリケーションをデプロイしたときの最上位ディレクトリに文字列 "WEBLOGIC-APPLICATION-ROOT" が展開されます。


Q. 組み込み LDAP サーバへのアクセスを保護するにはどうしたらよいですか。

A. acls.prop ファイル (WLHOME/server/lib/acls.prop) を使用すると、組み込み LDAP サーバへのアクセスを制御できます。acls.prop を変更することも可能です。詳細については、「組み込み LDAP サーバの管理」を参照してください。


Q. 組み込み LDAP サーバは SSL をサポートしていますか。

A. はい。SSL リスン ポート (7002) を使用します。実際には、WebLogic Server muxer がすべての SSL 処理を実行します。したがって、SSL を使用して組み込み LDAP サーバにアクセスする場合でも、追加のコンフィグレーションは必要ありません。


Q. LDAP Admin アカウントのパスワードは何ですか。

A. パスワードは、EmbeddedLDAP MBean の [Credential] フィールドに指定されています。このパスワードは、サーバを初めて起動したときに生成され、config.xml ファイルに書き込まれます。LDAP Admin アカウントの DN は cn=Admin です。LDAP Admin アカウントのパスワードを変更するには、WebLogic Server Administration Console を使用します。詳細については、「組み込み LDAP サーバのコンフィグレーション」を参照してください。

A.

 

フッタのナビゲーションのスキップ  ページの先頭 前 次