2010-04-22 19 views
7

Sto provando a fare un'autenticazione di base veramente semplice con Spring Security. Ho configurato correttamente lo spazio dei nomi e non ci sono eccezioni nel server. Nel mio "servlet.xml" Ho avuto la prossima primavera per la sicurezza:Spring Security HTTP Basic Authentication

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

E 'quasi tutto va perfetto: I metodi che non sono POST non richiedere alcuna forma di login, e il metodo POST spingono esso. Il problema è che, né cucu, né bob possono accedere lì. Qualcuno può vedere cosa sto sbagliando?

Grazie in anticipo! ;-)

+0

Quale versione di Spring Security stai usando? – Gandalf

+0

Scusa, l'ho dimenticato, Spring Security 3 – raspayu

+0

Puoi pubblicare la traccia/uscita dello stack dall'errore effettivo? – Gandalf

risposta

23

Risposta automatica

T_T Due giorni di sbattere la testa contro il codice per questo ...

sembra che non è un problema di il codice. Con Weblogic stavo usando e Weblogic cattura le richieste con l'intestazione "authorization", quindi non arriva al mio authentication-manager. L'ho provato con glassfish e funziona perfettamente.

Ricerca di alcune informazioni, ho trovato una voce utile nel prossimo blog: http://yplakosh.blogspot.com/2009/05/how-to-fix-basic-authentication-issue.html

Aggiungendo la riga successiva nel config.xml dal mio server Weblogic (<security-configuration> sezione):

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

Weblogic non catturerà più le credenziali di autenticazione di base, quindi sarà il tuo gestore di autenticazione che lo gestirà.

Spero che possa risparmiare tempo a chiunque :-)

+4

Grazie mille per aver postato questa soluzione. Ho appena iniziato a eseguire questo problema e ho trovato il tuo post dopo aver cercato Goolgle. –

+0

Hehe, sono davvero felice di averti aiutato a risparmiare tempo ;-) – raspayu

1

prova:

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

Grazie per il consiglio. Ho provato anche con la configurazione automatica in vero, ma penso che mi manca qualcos'altro ... ma non so cosa. Penso che il mio codice sia davvero semplice, non ci dovrebbero essere problemi con questo. – raspayu