Spring Boot and Spring Security not honoring configureGlobal -
i created simple springboot app , added spring security. when login accepting default password generating.
it won't let me login using username/password have configured in websecurityconfigureradapter.
here code. ssfirstapplication.java
@springbootapplication @enableautoconfiguration public class ssfirstapplication { public static void main(string[] args) { springapplication.run(ssfirstapplication.class, args); } } my custom security config "securityconfig.java"
@configuration @enablewebsecurity @order(securityproperties.access_override_order) public class securityconfig extends websecurityconfigureradapter{ @autowired public void configureglobal(authenticationmanagerbuilder authbuilder) throws exception{ loginfo("configureglobal"); authbuilder .inmemoryauthentication() .withuser("user") .password("password123"); //.roles("user"); } private void loginfo(string strtoken){ for(int index=0;index<1;index++){ system.out.println("************************** "+strtoken+" ****************************"); } } @override protected void configure(httpsecurity http) throws exception{ loginfo("configure"); http .authorizerequests() .anyrequest().authenticated(); } } and web app initializer "securitywebapplicationinitializer"
import org.springframework.security.web.context.abstractsecuritywebapplicationinitializer; public class securitywebapplicationinitializer extends abstractsecuritywebapplicationinitializer{ public securitywebapplicationinitializer(){ super(securityconfig.class); } protected class<?>[] getrootconfigclasses() { return new class[] { securityconfig.class }; } } when start springboot app (i using sts/eclipse ide) in console generating , printing out password username "user".
when try http://localhost:8080/admin won't let me use username/password configured.
here pom.xml
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>org.test</groupid> <artifactid>demo</artifactid> <version>0.0.1-snapshot</version> <packaging>jar</packaging> <name>ss-first</name> <description>demo project spring boot</description> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.2.3.release</version> <relativepath/> <!-- lookup parent repository --> </parent> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <start-class>demo.ssfirstapplication</start-class> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> </project>
the configuration of spring mvc , spring security needs corrected. following configuration you.
@springbootapplication @controller public class app extends webmvcconfigureradapter { @override public void addviewcontrollers(viewcontrollerregistry registry) { registry.addviewcontroller("/login").setviewname("login"); } @requestmapping(value="/") public string home() { return "admin"; } the securityconfig more or less correct except need add login url information shown below.
@override protected void configure(httpsecurity http) throws exception { http.authorizerequests().anyrequest().fullyauthenticated().and().formlogin() .loginpage("/login").failureurl("/login?error").permitall(); http.csrf().disable(); } as menionted in comments above securitywebapplicationinitializer not needed in config.
Comments
Post a Comment