2010-04-22 17 views
7

Ich versuche, eine wirklich einfache Basisauthentifizierung mit Spring Security durchzuführen. Ich habe den Namespace richtig konfiguriert und es gibt keine Ausnahmen auf dem Server. In meinem „servlet.xml“ Ich habe die nächste für Spring Security bekommt:Spring Security HTTP-Basisauthentifizierung

<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> 

Es ist fast alles geht perfekt: Die Methoden, die nicht POST sind kein Login-Formular aufgefordert, und die POST Methode es prompt. Das Problem ist, dass sich weder cucu, noch bob dort einloggen können. Kann jemand sehen, was ich falsch mache?

Vielen Dank im Voraus!

;-)
+0

Welche Version von Spring Security verwenden Sie? – Gandalf

+0

Sorry, ich habe es vergessen, Spring Security 3 – raspayu

+0

Können Sie die Stack-Trace/Ausgabe aus dem tatsächlichen Fehler buchen? – Gandalf

Antwort

23

Auto-Antwort

T_T Zwei Tage meines Kopfes gegen den Code für das Schlagen ...

Sieht aus wie es ist kein Problem, ist der Code. Ich benutzte Weblogic damit und Weblogic erfasst die Anfragen mit dem "authorization" Header, so dass es nicht zu meinem Authentication-Manager kommt. Ich habe es mit Glassfish probiert, und es funktioniert perfekt.

für ein paar Informationen Suche, fand ich einen nützlichen Eintrag im nächsten Blog: http://yplakosh.blogspot.com/2009/05/how-to-fix-basic-authentication-issue.html

die nächste Zeile in der config.xml von meinem Weblogic Server (<security-configuration> Abschnitt) Hinzufügen:

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

Weblogic wird die Basisauthentifizierungsdaten nicht mehr abfangen, daher wird Ihr Authentifizierungsmanager damit umgehen.

Ich hoffe, es kann etwas Zeit für jedermann sparen :-)

+4

Vielen Dank für die Veröffentlichung dieser Lösung. Ich habe gerade angefangen, auf dieses Problem zu stoßen und habe deinen Beitrag gefunden, nachdem ich Goolgle gesucht habe. –

+0

Hehe, ich bin wirklich froh, dass ich dir geholfen habe, etwas Zeit zu sparen ;-) – raspayu

1

Versuch:

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

Danke für den Hinweis. Ich habe mich auch mit der Auto-Config getraut, aber ich glaube ich vermisse etwas anderes ... aber weiß nicht was. Ich denke mein Code ist wirklich einfach, da sollte es keine Probleme geben. – raspayu