2010-04-22 8 views
7

J'essaie de faire une authentification de base très simple avec Spring Security. J'ai configuré l'espace de noms correctement et il n'y a aucune exception dans le serveur. Dans mon « servlet.xml » J'ai la prochaine pour la sécurité Spring:Spring Security Authentification de base HTTP

<security:http> 
    <security:http-basic></security:http-basic> 
    <security:intercept-url method="POST" pattern="/**" access="ROLE_USER" /> 
</security:http> 


<security:authentication-manager alias="authenticationManager"> 
    <security:authentication-provider> 
     <security:user-service> 
      <security:user name="cucu" password="tas" authorities="ROLE_USER" /> 
      <security:user name="bob" password="bobspassword" authorities="ROLE_USER" /> 
     </security:user-service> 
    </security:authentication-provider> 
</security:authentication-manager> 

Il a presque tout va parfait: Les méthodes qui ne sont pas POST ne demande aucune forme de connexion, et la méthode POST incitée. Le problème est, que ni cucu, ni bob peut se connecter là. Quelqu'un peut-il voir ce que je fais mal?

Merci d'avance! ;-)

+0

Quelle version de Spring Security utilisez-vous? – Gandalf

+0

Désolé, je l'ai oublié, Spring Security 3 – raspayu

+0

Pouvez-vous poster la pile trace/sortie de l'erreur réelle? – Gandalf

Répondre

23

Auto-réponse

T_T Deux jours de frapper la tête contre le code pour cette ...

On dirait que ce n'est pas un problème de le code. J'utilisais Weblogic avec et Weblogic capture les requêtes avec l'en-tête "autorisation", donc il ne parvient pas à mon gestionnaire d'authentification. Je l'ai essayé avec glassfish, et ça marche parfaitement.

Recherche de quelques informations, je trouve une entrée utile dans le prochain blog: http://yplakosh.blogspot.com/2009/05/how-to-fix-basic-authentication-issue.html

Ajout de la ligne suivante dans le config.xml de mon serveur Weblogic (section <security-configuration>):

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>

Weblogic n'attrapera plus les informations d'authentification de base, ce sera donc votre gestionnaire d'authentification qui s'en chargera.

J'espère que cela peut faire gagner du temps à tout le monde :-)

+4

Merci beaucoup d'avoir posté cette solution. J'ai juste commencé à courir dans ce problème et j'ai trouvé votre message après avoir recherché Goolgle. –

+0

Hehe, je suis vraiment heureux d'avoir aidé à vous faire gagner du temps ;-) – raspayu

1

essayer:

<http auto-config="true> 
    <security:intercept-url method="POST" pattern="/**" access="ROLE_USER" /> 
    <http-basic /> 
</http> 
+0

Merci pour le conseil. J'ai aussi essayé avec l'auto-config, mais je pense qu'il me manque quelque chose d'autre ... mais je ne sais pas quoi. Je pense que mon code est très simple, il ne devrait pas y avoir de problèmes avec ça. – raspayu

Questions connexes