2010-09-17 4 views
2

Когда ntlmprocessingfilter fail (введите неправильное имя пользователя и пароль), он перенаправляется на страницу регистрации форм. но я не могу получить значение от j_username в protected UserDetails retrieveUser(String usernamespring security form-login

любая идея, что я пропустил?

Я узнал, что он работает в firefox. но не работает в Internet explorer

ответ

1

Firefox does not use NTLM authentication по умолчанию, в то время как Internet Explorer делает.

Итак, если вы специально не настроили установку Firefox для использования NTLM, то Firefox будет использовать другой тип аутентификации, такой как Basic или Digest.

Как Basic, так и Digest используют простое имя пользователя для аутентификации, поэтому имеет смысл, что после того, как Firefox отправит имя пользователя, он будет сохранен в j_username (или где бы еще он не хранился в Spring Security).

Напротив, NTLM использует имя пользователя и домен NT для аутентификации. т.е. вместо «username» это может быть «DOMAIN \ username». Имя пользователя NTML бессмысленно без домена, поэтому имя пользователя NTLM на самом деле не эквивалентно имени пользователя Basic или Digest. Возможно, именно поэтому Spring Security не дает вам имя пользователя - у NTLM нет простого «имени пользователя», как это делают другие методы входа.

0

Вы говорите, что не можете получить имя пользователя при повторной отправке?

Вы используете переменные пружинную безопасность $ {} SPRING_SECURITY_LAST_USERNAME как в

<input type="text" name="j_username" value="${SPRING_SECURITY_LAST_USERNAME}"> 
+0

nope. не повторите, когда ntlm не удастся, я вернусь, чтобы сформировать логин. это проблема, которая обсуждалась на весеннем форуме безопасности другими. не кажется решением – cometta

Смежные вопросы