7

そのようなユーザーをプログラムでログインすることにより、別の認証で 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()、新しいサブジェクトを に関連付けませんEJBContextrun()-Methodのコードは、古いユーザーのプリンシパルを から取得しEJBContextます。

ログインしたユーザーを取得する別の方法をテストしましたが、ここでは同じ動作をします。

Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");

何か案は?

4

2 に答える 2

2

今はどれLoginModuleを使っていますか?JBoss 6.1ClientLoginModuleでは、コンテナでの認証に使用する必要がありました。

于 2012-10-13T09:34:26.310 に答える
0

私の理解では、これは現在 JBoss AS 7.1 ではサポートされていません。このスレッドを参照してください

編集

私がここに書いたことは間違っています。スレッドはクライアント側のログイン (JBoss の外部) にのみ適用されます。

于 2012-10-13T10:51:11.827 に答える