次の図に、Message Queue ブローカが JAAS を使用する方法を示します。この図は、前の図に示した JAAS モデルのより複雑な実装を示しています。
簡単な方の事例に示されているように、認証サービス層はブローカとは別になっています。認証サービスは、1 つ以上のログインモジュール (LoginModule) と、必要に応じて追加する認証モジュールで構成されます。ログインモジュールは、ブローカと同じ Java 仮想マシンで実行されます。Message Queue ブローカは、ログインモジュールに対して LogInContext として表現され、ブローカ実行時コードの一部である CallBackHandler によってログインモジュールと通信します。
認証サービスは、ログインモジュールのエントリを含む JAAS 設定ファイルも提供します。設定ファイルは、モジュールを使用する順序、およびモジュールの使用に関する一部の条件を指定します。ブローカが起動すると、JAAS は Java システムプロパティー java.security.auth.login.config または Java セキュリティープロパティーファイルによって設定ファイルを検出します。次に、JAAS は、ブローカプロパティー imq.user_repository.jaas.name の値に応じて、JAAS 設定ファイル内のエントリを選択します。そのエントリは、認証に使用するログインモジュールを指定します。図に示すように、ブローカは複数のログインモジュールを使用できます。(設定ファイル、ログインモジュール、およびブローカの関係は、図 1–3 に示されています。)
ブローカが JAAS プラグイン認証サービスを使用するという事実は、Message Queue クライアントに対して完全に透明なままです。クライアントは引き続き以前と同じようにブローカに接続し、ユーザー名とパスワードを渡します。同様に、ブローカはコールバックハンドラを使用してこの情報を認証サービスに渡し、認証サービスはその情報を使用してユーザーを認証し、結果を返します。認証に成功した場合、ブローカは接続を許可します。認証に失敗した場合、クライアントランタイムはクライアントが処理する必要のある JMS セキュリティー例外を返します。
Message Queue クライアントの認証後に、さらに行うべき承認がある場合、ブローカは通常どおり続行されます。ブローカはアクセス制御ファイルを参照し、認証されたクライアントが引き受けるアクションを実行することを承認するかどうかを決定します。それらのアクションには、送信先へのアクセス、メッセージの消費、キューの表示などがあります。