{"id":1644,"date":"2016-10-05T15:38:02","date_gmt":"2016-10-05T13:38:02","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1644"},"modified":"2016-10-05T15:56:11","modified_gmt":"2016-10-05T13:56:11","slug":"java-spring-security-database-user","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1644","title":{"rendered":"Java Spring Security &#8211; Database User"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Configuration\"><span class=\"toc_number toc_depth_1\">1<\/span> Configuration<\/a><ul><li><a href=\"#SpringSecurityInitializer\"><span class=\"toc_number toc_depth_2\">1.1<\/span> SpringSecurityInitializer<\/a><\/li><li><a href=\"#UserDetailsService\"><span class=\"toc_number toc_depth_2\">1.2<\/span> UserDetailsService<\/a><\/li><li><a href=\"#SecurityConfiguration\"><span class=\"toc_number toc_depth_2\">1.3<\/span> SecurityConfiguration<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h1><span id=\"Configuration\">Configuration<\/span><\/h1>\n<h2><span id=\"SpringSecurityInitializer\">SpringSecurityInitializer<\/span><\/h2>\n<p>To enable spring security, you must create SpringSecurityInitializer.java :<\/p>\n<pre lang=\"java\">\r\npublic class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer {\r\n   \/\/do nothing\r\n}\r\n<\/pre>\n<h2><span id=\"UserDetailsService\">UserDetailsService<\/span><\/h2>\n<p>To check if the user is allowed to connect, create  UserDetailsServiceImpl.java :<\/p>\n<pre lang=\"java\">\r\n@Service(\"userDetailsService\")\r\npublic class UserDetailsServiceImpl implements UserService, UserDetailsService {\t\r\n\r\n\t@Autowired\r\n\tprivate MyUserService myUserService = null;\t\r\n\r\n\tpublic Contact loadUserByUsername(String username) {\r\n                \/\/ get User from database :\r\n\t\tUser user = myUserService .getUser(username);\t\t\r\n\t\t\r\n\t\tif(user == null) {\r\n\t\t\t\/\/ User not found, throw UsernameNotFoundException.\r\n\t\t\tthrow new UsernameNotFoundException(\"UsernameNotFoundException\");\r\n\t\t}\r\n\r\n                \/\/ user found :\r\n\t\treturn user;\r\n\t}\r\n}\r\n<\/pre>\n<h2><span id=\"SecurityConfiguration\">SecurityConfiguration<\/span><\/h2>\n<pre lang=\"java\">\r\n@Configuration\r\n@EnableWebSecurity\r\n@EnableGlobalMethodSecurity(prePostEnabled = true)\r\npublic class SecurityConfiguration extends WebSecurityConfigurerAdapter {\r\n\r\n    @Autowired\r\n    private UserDetailsService userDetailService;\r\n\r\n    @Autowired\r\n    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {\r\n        \/\/ use BCrypt algorithm to encode passwords :\r\n        auth.userDetailsService(userDetailService).passwordEncoder(new BCryptPasswordEncoder());\r\n    }\r\n\r\n    @Override\r\n    protected void configure(HttpSecurity http) throws Exception {\r\n        http    \r\n            .csrf()\r\n            .formLogin()\r\n                .loginPage(\"\/login.html\")\r\n                .loginProcessingUrl(\"\/j_spring_security_check\")\r\n                .failureUrl(\"\/login-failed.html\")\r\n                .usernameParameter(\"j_username\")\r\n                .passwordParameter(\"j_password\")\r\n                .defaultSuccessUrl(\"\/login-success.html\")\r\n                .permitAll()\r\n        .and()\r\n            .logout()\r\n                .logoutUrl(\"\/j_spring_security_logout\")\r\n                .logoutSuccessUrl(\"\/logout-success.html\")\r\n                .deleteCookies(\"JSESSIONID\")\r\n        .and()\r\n            .authorizeRequests();                \r\n    }\r\n}\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Configuration1.1 SpringSecurityInitializer1.2 UserDetailsService1.3 SecurityConfiguration Configuration SpringSecurityInitializer To enable spring security, you must create SpringSecurityInitializer.java : public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { \/\/do nothing } UserDetailsService To check if the user is allowed to connect, create UserDetailsServiceImpl.java : @Service(&#8220;userDetailsService&#8221;) public class UserDetailsServiceImpl implements UserService, UserDetailsService { @Autowired private MyUserService myUserService = null; public Contact loadUserByUsername(String [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1642,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1644","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1644"}],"version-history":[{"count":3,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1644\/revisions"}],"predecessor-version":[{"id":1647,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1644\/revisions\/1647"}],"up":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1642"}],"wp:attachment":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}