2010-04-22 17 views
7

Próbuję wykonać naprawdę proste podstawowe uwierzytelnianie przy użyciu Spring Security. Skonfigurowałem przestrzeń nazw poprawnie i nie ma żadnych wyjątków na serwerze. W moim „servlet.xml” Mam następny Spring Bezpieczeństwo:Wiosenne uwierzytelnianie HTTP Security

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

To prawie wszystko idzie idealnie: Metody, które nie są POST nie pyta żadnego formularza logowania, oraz metoda POST poprosi go. Problem polega na tym, że ani cucu, ani bob nie mogą się tam zalogować. Czy ktoś może zobaczyć, co robię źle?

Z góry dziękuję! ;-)

+0

Jakiej wersji Spring Security używasz? – Gandalf

+0

Przepraszam, zapomniałem, Spring Security 3 – raspayu

+0

Czy możesz opublikować ślad/wyjście stosu z faktycznego błędu? – Gandalf

Odpowiedz

23

Auto-odpowiedź

T_T Dwa dni uderzanie głową o kodzie to ...

Wygląda na to, że nie jest to problem kod. Używałem przy tym Weblogic, a Weblogic przechwytuje żądania z nagłówkiem "autoryzacja", więc nie dostanie się do mojego menedżera uwierzytelniania. Próbowałem go z glassfish i działa idealnie.

Poszukuję pewnej informacji, znalazłem przydatny wpis w następnym blogu: http://yplakosh.blogspot.com/2009/05/how-to-fix-basic-authentication-issue.html

dodaniem następnego wiersza w config.xml z mojego serwera Weblogic (<security-configuration> fragment):

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

Weblogic nie będzie ponownie przechwytywał podstawowych poświadczeń uwierzytelniających, więc będzie to Twój menedżer uwierzytelniania, który będzie nim zarządzał.

Mam nadzieję, że może zaoszczędzić trochę czasu każdemu :-)

+4

Dziękuję bardzo za opublikowanie tego rozwiązania. Właśnie zacząłem napotkać ten problem i znalazłem twój wpis po przeszukaniu Goolgle. –

+0

Hehe, jestem naprawdę szczęśliwy, że pomogłem Ci zaoszczędzić trochę czasu ;-) – raspayu

1

try:

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

Dzięki za poradę. Próbowałem również z automatyczną konfiguracją, ale myślę, że brakuje mi czegoś innego ... ale nie wiem co. Myślę, że mój kod jest naprawdę prosty, nie powinno być z tym problemów. – raspayu

Powiązane problemy