Войдите в систему программно через JAAS

Я пытаюсь запустить код в 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 работает (Call of LoginModule был успешным) но Subject.doAs() не связывает новый предмет с EJBContext, Код в run()-Метод все еще выбирает основную часть старого пользователя из EJBContext,

Я проверил другой метод восстановления вошедшего в систему пользователя, но такое же поведение здесь:

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

Есть идеи?

2 ответа

Решение

Который LoginModule ты сейчас используешь? В JBoss 6.1 вам пришлось использовать ClientLoginModule аутентифицироваться в контейнере.

Насколько я понимаю, это в настоящее время не поддерживается JBoss AS 7.1. Смотрите эту тему

редактировать

То, что я здесь написал, неверно, тема относится только к входу на стороне клиента (вне JBoss).

Другие вопросы по тегам