2010-09-17 5 views
2

lorsque ntlmprocessingfilter échoue (entrée nom d'utilisateur et mot de passe erronés), il est transmis à la page de connexion au formulaire. mais je ne peux pas obtenir la valeur de j_username dans protected UserDetails retrieveUser(String usernameprintemps sécurité formulaire-login

une idée de ce que je manque?

J'ai découvert que cela fonctionne dans firefox. mais ne fonctionne pas dans Internet Explorer

Répondre

1

Firefox does not use NTLM authentication par défaut, alors que le fait d'Internet Explorer. Donc, à moins que vous n'ayez délibérément configuré votre installation de Firefox pour utiliser NTLM, Firefox utilisera un autre type d'authentification comme Basic ou Digest. Basic et Digest utilisent tous deux un nom d'utilisateur simple pour l'authentification. Il est donc logique qu'après l'envoi du nom d'utilisateur par Firefox, il soit stocké dans j_username (ou partout où Spring Security le stocke). En revanche, NTLM utilise à la fois un nom d'utilisateur et un domaine NT pour authentifier. Par exemple, au lieu de "nom d'utilisateur", il peut s'agir de "DOMAINE \ nom d'utilisateur". Le nom d'utilisateur NTML est sans signification sans un domaine, donc un nom d'utilisateur NTLM n'est pas vraiment équivalent à un nom d'utilisateur Basic ou Digest. C'est peut-être pourquoi Spring Security ne vous donne pas le nom d'utilisateur - NTLM n'a pas un simple 'nom d'utilisateur' comme les autres méthodes de connexion.

0

Êtes-vous en train de dire que vous ne parvenez pas à obtenir le nom d'utilisateur lorsque vous le soumettez à nouveau?

Utilisez-vous la variable de sécurité ressort $ {} SPRING_SECURITY_LAST_USERNAME comme dans

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

non. ne pas resoumettre, quand ntlm échouera, je vais revenir à la forme de connexion. c'est un problème qui a été discuté dans le forum de sécurité du printemps par d'autres. semble pas de solution – cometta

Questions connexes