3.6. Elytron でのカスタムセキュリティーイベントリスナーの使用
Elytron を使用して、カスタムイベントリスナーを定義できます。カスタムイベントリスナーは、受信したセキュリティーイベントを処理します。イベントリスナーは、カスタム監査ロギングに使用することも、内部 ID ストレージに対してユーザーを認証するために使用することもできます。
module 管理 CLI コマンドを使用してモジュールを追加および削除する機能は、テクノロジープレビュー機能としてのみ提供されています。module コマンドは、マネージドドメインで使用する場合や、リモート管理 CLI を使用して接続する場合には適していません。実稼働環境ではモジュールを手動で追加または削除する必要があります。
テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
テクノロジープレビュー機能のサポート範囲は、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
アプリケーションをセキュリティー保護している。
詳細は、Elytron での
aggregate-realmの作成 を参照してください。
手順
java.util.function.Consumer<org.wildfly.security.auth.server.event.SecurityEvent>インターフェイスを実装するクラスを作成します。指定のインターフェイスを使用する Java クラスの作成例
public class MySecurityEventListener implements Consumer<SecurityEvent> { public void accept(SecurityEvent securityEvent) { if (securityEvent instanceof SecurityAuthenticationSuccessfulEvent) { System.err.printf("Authenticated user \"%s\"\n", securityEvent.getSecurityIdentity().getPrincipal()); } else if (securityEvent instanceof SecurityAuthenticationFailedEvent) { System.err.printf("Failed authentication as user \"%s\"\n", ((SecurityAuthenticationFailedEvent)securityEvent).getPrincipal()); } } }この例の Java クラスは、ユーザー認証に成功または失敗するたびに、メッセージを表示します。
カスタムイベントリスナーをモジュールとして提供する JAR ファイルを、JBoss EAP に追加します。
以下に、カスタムイベントリスナーをモジュールとして Elytron に追加する管理 CLI コマンドの例を示します。
moduleコマンドを使用して、カスタムイベントリスナーを Elytron にモジュールとして追加した例/subsystem=elytron/custom-security-event-listener=<listener_name>:add(module=<module_name>, class-name=<class_name>)セキュリティードメインのカスタムイベントリスナーを参照します。
ApplicationDomainでカスタムイベントリスナーを参照する例/subsystem=elytron/security-domain=<domain_name>:write-attribute(name=security-event-listener, value=<listener_name>)サービスを再起動します。
$ reloadイベントリスナーは、指定されたセキュリティードメインからセキュリティーイベントを受信します。