JAAS LoginModule login() и commit() успешно, но пользователь не вошел в систему

Я реализовал LoginModule для выполнения некоторой пользовательской аутентификации и вызываю аутентификацию, используя метод login() класса LoginContext. Методы login() и commit() модуля входа в систему вызываются успешно, но вместо того, чтобы использовать веб-приложение, я немедленно возвращаюсь на страницу входа. request.getUserPrincipal() имеет значение null, как и request.getRemoteUser().

Любые идеи очень приветствуются. Спасибо!

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Кроме того, сразу после того, как я вызываю loginContext.login() на внешнем интерфейсе, вызов loginContext.getSubject().getPrincipals() дает мне правильный список участников и ролей для пользователя, который только что вошел в систему.

Я использую Tomcat 6.0.29 в качестве сервера.


person Jon Onstott    schedule 27.09.2010    source источник


Ответы (2)


ммм выстрел в темноте

Вы пытались дать разрешение в файле политики, например, так

grant codeBase "file:/myCustomModule.jar" {
  permission javax.security.auth.AuthPermission "modifyPrincipals";
  permission javax.security.auth.AuthPermission "modifyPublicCredentials";
  permission javax.security.auth.AuthPermission "modifyPrivateCredentials";
};
person JoseK    schedule 28.09.2010
comment
Я предполагаю, что файл политики использовался бы, если бы у меня был какой-то JAR. Я аутентифицирую веб-сайт, работающий на Tomcat; мне нужен файл политики? - person Jon Onstott; 28.09.2010
comment
@Jon: модуль входа в систему не в банке? - person JoseK; 28.09.2010
comment
Это. JAR упакован в папку WEB-INF/lib моего веб-приложения. Это странная проблема, потому что вход в систему кажется успешным, и вызывается commit(). - person Jon Onstott; 28.09.2010

Я пытался выполнить программный вход в Tomcat, и хотя модуль входа работал, контейнер не получал аутентификацию. Мое решение состояло в том, чтобы выполнить аутентификацию с использованием HTML-формы с «j_security_check» в качестве действия.

person Jon Onstott    schedule 15.11.2010