2013-03-21 14 views
5

Yaylı güvenlik sistemim var ve login.jsp üzerinden oturum açma işlemi gayet iyi çalışıyor.Yay Güvenliği -/j_spring_security_check adresine gidin

Şimdi, otomatik (Tek Oturum Açma benzer) URL'sini temel giriş yapmış kullanıcı almak zorunda. Temelde şifrelenmiş bir kod olan URL'de bir yol parametresine sahibim, bu kodu otomatik giriş yapmak için kullanıyorum.

Ben Bu aşağıdaki hata ile login.jsp'ye beni yönlendirir Ben "forward:/j_spring_security_check?j_username="+username+"&j_password="+password

yapıyorum bu kullanıcı adı & şifreyi kullanarak, ben geçerli bir yol param benim kullanıcı adı & şifre almak hangi kullanarak olup olmadığını kontrol etmek benim LoginController değiştirerek ediyorum Your login attempt was not successful, try again. Caused : Authentication method not supported: GET

Ben de "redirect:/j_spring_security_check?j_username="+username+"&j_password="+password ile ancak hiçbir yardımı ile çalıştık.

Çağrı /j_spring_security_check bir POST ama forward: & redirect: bir GET yapıyor, bu yüzden benim LoginController gelen POST olarak /j_spring_security_check nasıl gönderebilir?

Teşekkür

+0

kontrol edin: http://stackoverflow.com/a/8229195/322166 – Dani

cevap

10

/j_spring_security_check URL taleplerini hizmet etmek UsernamePasswordAuthenticationFilter eşleştirilir. UsernamePasswordAuthenticationFilter, postOnly, true olarak ayarlanmıştır.

postOnly - false için ayarlanan spring-security.xml numaralı aşağıdaki değişiklik çalışılmıştır.

<bean id="authenticationFilter" 
     class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" 
     p:postOnly="false" /> 

Ayrıca web.xml olarak aşağıdaki yapılandırma gereklidir: bu yardımcı olabilir

<filter-mapping> <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 
3

yerine getMethod için "GET" nin "POST" döndüren bir istek sarmalayıcı kullanarak çek atlatabilir. Bununla birlikte, kontrol bir sebepten dolayıdır. Kimlik bilgilerini URL parametreleri olarak göndermek genellikle kötü bir uygulama olarak kabul edilir. Şifrelenmiş bir parametre kullanmış olsanız bile, şifreleyen kimlik doğrulama bilgilerini göndermeye teknik olarak eşdeğerdir, çünkü bunu çalan herkes kimlik doğrulaması için kullanabilir.

+0

Chrome cihazı ile değerli yorumlar. Şu anda, doğrudan doğruya bir başka alternatif düşünmüyorum.// J_spring_security_check', URL param'leriyle doğrudan paylaşıyor, eğer varsa, lütfen paylaşın. –

+0

/j_spring_security_check güvenlik sorununun yattığı yer değil. Form kimlik süzgecine bir istek oluşturmaya çalışmaktan ziyade 'AuthenticationManager'ı doğrudan kendiniz çağırırsınız (bu, kötü bir fikir, özellikle bir yönlendirme). Ancak, yol parametresini URL'ye göndermek, muhtemelen ilk etapta iyi bir fikir değildir. –