3.2. 仮想セキュリティードメインを使用した Jakarta Enterprise Beans アプリケーションの保護
elytron-oidc-client
サブシステムによって作成された仮想セキュリティードメインを使用すると、Jakarta Enterprise Beans がその呼び出し元のサーブレットと同じデプロイメントに配置されている場合でも、異なるデプロイメントに配置されている場合でも、Jakarta Enterprise Beans を保護できます。
Jakarta Enterprise Beans がその呼び出し元のサーブレットと同じデプロイメントに配置されている場合、サーブレットから Jakarta Enterprise Beans にセキュリティーアイデンティティーをアウトフローするための設定は必要ありません。
サーブレットから別のデプロイメントにある Jakarta Enterprise Beans にセキュリティーアイデンティティーをアウトフローするには、この手順のステップを実行します。
前提条件
- OpenID Connect (OIDC) プロバイダーを使用して、Jakarta Enterprise Beans の呼び出し元のアプリケーションを保護している。
- 保護対象の Jakarta Enterprise Beans を作成している。
手順
OIDC で保護されたサーブレットを含む WAR、または OIDC で保護されたサブデプロイメントを含む EAR を参照する
virtual-security-domain
リソースを作成します。構文
/subsystem=elytron/virtual-security-domain=<deployment_name>:add()
例:
/subsystem=elytron/virtual-security-domain=simple-ear-example.ear:add()
アプリケーションの保護に使用する仮想セキュリティードメインリソースを参照する
org.jboss.ejb3.annotation.SecurityDomain
アノテーションを Jakarta Enterprise Beans アプリケーションに追加します。構文
@SecurityDomain("<deployment_name>")
例:
... @SecurityDomain("simple-ear-example.ear") @Remote(RemoteHello.class) @Stateless public class RemoteHelloBean implements RemoteHello { @Resource private SessionContext context; @Override public String whoAmI() { return context.getCallerPrincipal().getName(); } }
OIDC で保護されたサーブレットからこの Jakarta Enterprise Beans を呼び出す場合、
whoAmI ()
によって返されるプリンシパルは、サーブレットが OIDC プロバイダーから取得したプリンシパルと一致します。Jakarta Enterprise Beans をデプロイします。
例:
$ mvn wildfly:deploy