代行 とは、 セキュリティー ID を呼び出し元から呼び出されるオブジェクトに伝搬するプロセスです。 Java 2 Platform, Enterprise Edition (J2EE) 仕様により、 サーブレットとエンタープライズ Bean は、エンタープライズ Bean を呼び出す際にクライアントまたはリモート・ユーザーの ID を伝搬することも、 あるいは対応するデプロイメント記述子で指定された別の指定 ID を使用することもできます。
EJB 仕様では、Enterprise JavaBeans (EJB) レベルでの代行 (RunAs) のみがサポートされています。 ただし、拡張機能は、EJB メソッド・レベルの RunAs 仕様を許可します。 EJB メソッド・レベルの RunAs 仕様により、異なる RunAs 役割を 同一エンタープライズ Bean 内の別のメソッドに指定することが可能です。
RunAs 仕様は、 デプロイメント記述子 (EJB モジュールでは ejb-jar.xml ファイル、Web モジュールでは web.xml ファイル) で詳述されています。 RunAs 仕様の拡張は ibm-ejb-jar-ext.xmi ファイルにあります。
RunAs 役割からユーザーへの マッピングが入っているアプリケーションごとに、IBM 固有のバインディング・ファイルも使用可能です。 このファイルは ibm-application-bnd.xmi ファイルで指定しています。
Resource to RunAs Role マッピング表は、 サーブレットまたはエンタープライズ Bean が次のエンタープライズ Bean 呼び出しに伝える場合に使用する役割を取得するために使用します。
RunAsRole to user ID and password マッピング表は、 RunAs 役割に所属するユーザー ID とそのパスワードを取得するために使用します。
代行は、認証と許可が正常に終了した後に実行されます。 このプロセスで、代行モジュールは、RunAs 役割を取得するために Resource to RunAs Role マッピング表を調べます (3)。 代行モジュールは、RunAs 役割に属するユーザーを取得するために、 RunAs Role to User ID and Password マッピング表を調べます (4)。認証モジュール (この図にはありません) を使用して、 ユーザー ID とパスワードによって新規のクレデンシャルが作成されます。
作成されたクレデンシャルは、 呼び出しクレデンシャルとして Object Request Broker (ORB) Current に保管されます (5)。 サーブレットとエンタープライズ Bean は別のエンタープライズ Bean を呼び出すとき、 ORB Current から呼び出しクレデンシャルを取り出して (6)、次のエンタープライズ Bean を呼び出します (7)。