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つ以上のプリンシパルとの間のマッピングを宣言していない場合、ロール名がデフォルトのプリンシパルとして使用されます。