Я успешно установил домен безопасности JBoss и могу пройти аутентификацию с использованием аутентификации BASIC (как определено в web.xml). Все это хорошо работает. Однако я не могу понять, как использовать метод http request.login.
Следующий домен безопасности (из jboss-web.xml) работает для аутентификации BASIC:
<jboss-web>
<context-root>/myapp</context-root>
<security-domain>java:/jaas/myapp-realm</security-domain>
</jboss-web>
Но когда я использую request.login следующим образом:
public void login() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
try {
request.login(username, password);
}
catch (ServletException ex) {
java.util.logging.Logger.getLogger(UserLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
У меня следующее исключение:
javax.servlet.ServletException: Failed to authenticate a principal
Я знаю, что имя пользователя / пароль в порядке (он отлично работал с BASIC auth). Я вошел в систему на уровне TRACE, и не похоже, что он даже пытается аутентифицироваться. Что я пропустил?
См. http://java-web-development.blogspot.com/2011/07/jee-6-security-part-two-implementation.html, если вам нужны дополнительные сведения о моей настройке / конфигурации. Я использую JBoss 6.