そのようなユーザーをプログラムでログインすることにより、別の認証で JBoss Container 内でコードを実行しようとしています (除外された例外処理):
LoginContext ctx = ctx =
new LoginContext("MyLoginSchema",
new UsernamePasswordCallbackHandler("newuser", "")
);
ctx.login();
Subject.doAs(ctx.getSubject(), new PrivilegedAction<T>() {
@Override
public T run() {
Subject.getSubject(AccessController.getContext());
InitialContext ic = new InitialContext();
EJBContext sctxLookup = (EJBContext) ic.lookup("java:comp/EJBContext");
Principal principal = sctxLookup.getCallerPrincipal();
}
});
のログインはnewuser
機能しますが (の呼び出しLoginModule
は成功しました) Subject.doAs()
、新しいサブジェクトを に関連付けませんEJBContext
。run()
-Methodのコードは、古いユーザーのプリンシパルを から取得しEJBContext
ます。
ログインしたユーザーを取得する別の方法をテストしましたが、ここでは同じ動作をします。
Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
何か案は?