44 WebLogic ServerでのJava EE Security APIの使用
Java EE Security APIを使用すると、アプリケーション内ですべてのセキュリティ情報を直接定義できます。セキュリティ構成を外部で構成せずにアプリケーション内にバンドルすることで、アプリケーションのライフサイクルの管理を向上させることができます。特に、マイクロサービスがコンテナに分散されている環境においてはこれが有効です。
Java EE Security API (JSR 375)の概要
Java EE Security API (JSR 375)は、移植可能な認証メカニズムや、SecurityContext
インタフェースを使用したプログラムによるセキュリティのためのアクセス・ポイントを定義します。WebLogic Serverでは、Webコンテナ内でこれらの認証メカニズムがサポートされ、サーブレットおよびEJBコンテナ内でSecurityContext
インタフェースがサポートされています。
WebLogic Serverは、認証用のプラグイン・インタフェースであるHttpAuthenticationMechanism
をサポートしており、仕様に定義されているBASIC、FORMおよびカスタムFORM認証メカニズムに対する組込みサポートを備えています。また、WebLogic Serverは、RememberMeIdentityStore
インタフェース、およびIdentityStore
インタフェース(LDAPアイデンティティ・ストアとデータベース・アイデンティティ・ストア)とカスタム・アイデンティティ・ストアの組込み実装もサポートしています。
HttpAuthenticationMechanism
インタフェースは、既存のサーブレットおよびJASPIC認証メカニズムのメリットを活用できるように設計されています。IdentityStore
インタフェースは主にHttpAuthenticationMechanism
実装での使用を意図したものですが、理論上は他のタイプの認証メカニズム(JASPIC ServerAuthModule
など)でも使用できます。HttpAuthenticationMechanism
実装でIdentityStore
を使用することは必須ではなく、どのような方法でもユーザーを認証できますが、IdentityStore
インタフェースが有用で便利なメカニズムです。
HttpAuthenticationMechanism
インタフェースとIdentityStore
インタフェースはCDI Beanとして実装されるため、CDIを介してコンテナから参照できます。WebLogic ServerでのCDIのサポートの詳細は、『Oracle WebLogic Serverアプリケーションの開発』のContexts and Dependency Injection for the Java EE Platformの使用方法に関する項を参照してください。
SecurityContext
インタフェースは、アプリケーションが呼出し側に関するセキュリティ情報にアクセスし、呼出し側を認証し、呼出し側を認可できるようにするメソッドを定義します。
Java EE Security API 1.0 (JSR 375)のプログラミング・モデルは、https://www.jcp.org/en/jsr/detail?id=375
の仕様で定義されています。
WebLogic ServerでのJSR 375の使用の詳細は、『WebLogicセキュリティ・サービスによるアプリケーションの開発』のJava EE Security APIの使用に関する項を参照してください。
Java EE Security APIを使用するための前提条件
Java EE Security APIメカニズムを使用するために特定の構成は必要ありませんが、JASPICやCDIなどの他の機能が有効になっていることを確認する必要があります。
WebLogic ServerでJava EE Security API (JSR 375)機能を使用するには:
-
JSR 375機能を有効にするには、ドメイン・レベルでJASPICを有効にする必要があります。WebLogic Serverでは、デフォルトでドメインに対してJASPICが有効になっています。ドメイン・レベルでJASPICを無効にすると、JSR 375の機能も無効になります。
-
CDI仕様(
https://jcp.org/en/jsr/detail?id=365)
で規定されているように、WebアプリケーションではアプリケーションのWARファイルまたはEARファイルにbeans.xml
デプロイメント記述子ファイルを含める必要があります。 -
Webアプリケーションの
web.xml
ファイル内のmetadata-complete
属性は、true
に設定しないでください。WebLogic Serverでのデフォルトはfalse
です。 -
特別なロギング要件はありません。Java EE Security APIの実装によってトリガーされた監査イベントは、WebLogic監査プロバイダ(構成されている場合)によってログに記録されます。
-
Java EE Security APIでは、グループ・プリンシパル名がデフォルトで同じ名前のロールにマップされている必要があります。
weblogic.xml
デプロイメント記述子のsecurity-role-assignment
要素が、WebLogic Serverセキュリティ・レルムでセキュリティ・ロールと1つ以上のプリンシパルとの間のマッピングを宣言していない場合、ロール名がデフォルトのプリンシパルとして使用されます。