Spring Security login-controller
Ich versuche ein login-ein Benutzer von einem Domänencontroller nach der Anmeldung. Mein code im controller ist:
...
User user = new User();
BeanUtils.copyProperties(userVO, user);
userService.save(user);
List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
grantedAuthorities.add(new GrantedAuthorityImpl("USER"));
UsernamePasswordAuthenticationToken uat = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword(), grantedAuthorities);
uat.setDetails(user);
SecurityContext context = SecurityContextHolder.getContext();
Authentication userAuth = authenticationManager.authenticate(uat);
context.setAuthentication(userAuth);
...
in der Zeile authenticationManager.authentifizieren(uat) ich bin immer ein BadCredential Ausnahme und ich habe keine Ahnung, warum das passiert ist.
Hilfe?
Den stacktrace:
org.springframework.security.authentication.BadCredentialsException: Bad credentials
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:71)
at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:146)
at org.springframework.security.authentication.ProviderManager.doAuthentication(ProviderManager.java:130)
at org.springframework.security.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:48)
at com.gianu.test.controller.UserController.save(UserController.java:66)
at com.gianu.test.controller.UserController$$FastClassByCGLIB$$7ee64ba0.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
at com.gianu.test.controller.UserController$$EnhancerByCGLIB$$f57bd9ca.save(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:112)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:680)
Zeigen stacktrace, bitte.
InformationsquelleAutor GiaNU | 2011-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Ausnahme bedeutet einfach das falsche Passwort.
Beachten Sie, dass wenn Sie das konfigurierte Passwort-hashing -
UserDetails
enthält hash von Passwort (wie aus der Datenbank geladen), in der Erwägung, dassUsernamePasswordAuthenticationToken
enthält Klartext-Passwort (wie vom Benutzer eingegeben). In deinem code diese Passwörter sind die gleichen, vielleicht ist es eine Ursache.InformationsquelleAutor axtavt
Ich glaube nicht, dass du mit Spring Security richtig in den ersten Platz. Sollten Sie nicht erstellen Sie Ihre Authentifizierungs-token oder aufrufen der authentication manager in dem controller. Wird automatisch bearbeitet von Spring Security. Auch wenn man diese hacking zu arbeiten, ist es so ziemlich Niederlagen der Zweck der Verwendung von Spring Security in Erster Linie, weil Sie die Unordnung Ihrer Anwendung mit sinnlosen Sicherheits-code. Der springende Punkt bei der Verwendung von Spring Security ist die nahtlose Sicherheit integration in Ihre Anwendung, so dass die Anwendung und die Sicherheit sind nur sehr lose gekoppelt.
Ich sehr empfehlen Ihnen, zu überprüfen, das tutorial zuerst, bevor Sie fortfahren mit dem, was Sie jetzt tun: http://static.springsource.org/spring-security/site/petclinic-tutorial.html
Es ist nichts falsch dabei die signup-workflow. Ich habe ein Projekt, wo der Benutzer selbst ein Konto erstellen und ich im Grunde speichern den Usernamen und das gehashte Passwort in der Datenbank. Und dann lasse ich Spring Security zur Durchführung der Authentifizierung/Autorisierung mithilfe von DAO-Authentifizierungsanbieter, der Punkte-Datenbank. Wenn Sie das tun, was Sie jetzt machen, dann hat es keinen Sinn, mit SS, weil Sie manuell überprüfen, jedes mal, wenn der Benutzer besucht Ihre Seite, während Sie könnte nur delegieren diese Aufgabe an SS zu tun die gleiche Sache für Sie.
InformationsquelleAutor limc
Dies bedeutet einfach, dass Eines der Felder, die für die Verarbeitung der Anmeldung (D. H. der Benutzername oder das Passwort) aus dem Formular ist null und sollte ordnungsgemäß kontrolliert werden, wenn der controller übergibt die Parameter nicht richtig mit null-Werten...
Dieser Fehler ausgelöst wird dieser block in der Regel,
dieser code ist in der Klasse
"org.springframework.Sicherheit.die Authentifizierung.dao.DaoAuthenticationProvider"
Wenn die getCredentials passt null in if-block, Eine Bad Anmeldeinformationen Fehler wird geworfen nun, wie Sie sehen in der Konsole stacktrace...
InformationsquelleAutor Lucky