{"id":1648,"date":"2016-10-05T15:59:29","date_gmt":"2016-10-05T13:59:29","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1648"},"modified":"2016-10-05T16:10:15","modified_gmt":"2016-10-05T14:10:15","slug":"java-spring-security-social-user","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1648","title":{"rendered":"Java Spring Security &#8211; Social + Database User"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Prerequistes\"><span class=\"toc_number toc_depth_1\">1<\/span> Prerequistes<\/a><\/li><li><a href=\"#Configuration\"><span class=\"toc_number toc_depth_1\">2<\/span> Configuration<\/a><ul><li><a href=\"#SocialUserDetailsServiceImpljava\"><span class=\"toc_number toc_depth_2\">2.1<\/span> SocialUserDetailsServiceImpl.java<\/a><\/li><li><a href=\"#SocialConfig\"><span class=\"toc_number toc_depth_2\">2.2<\/span> SocialConfig<\/a><\/li><li><a href=\"#applicationproperties\"><span class=\"toc_number toc_depth_2\">2.3<\/span> application.properties<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h1><span id=\"Prerequistes\">Prerequistes<\/span><\/h1>\n<p>Please read <a href=\"?page_id=1644\">Java Spring Security &#8211; Database User<\/a><\/p>\n<h1><span id=\"Configuration\">Configuration<\/span><\/h1>\n<h2><span id=\"SocialUserDetailsServiceImpljava\">SocialUserDetailsServiceImpl.java<\/span><\/h2>\n<pre lang=\"java\">\r\n@Service(\"socialUserDetailsService\")\r\npublic class SocialUserDetailsServiceImpl implements SocialUserDetailsService{\r\n\r\n\tprivate UserDetailsService userDetailsService;\r\n\t\r\n\t@Autowired\r\n\tpublic SocialUserDetailsServiceImpl(UserDetailsService userDetailsService) {\r\n          this.userDetailsService = userDetailsService;\r\n        }\t\r\n\t\r\n\t\r\n\t@Override\r\n       public SocialUserDetails loadUserByUserId(String userId) throws UsernameNotFoundException, DataAccessException {\r\n\t\treturn (SocialUserDetails) userDetailsService.loadUserByUsername(userId);        \r\n    }\r\n\r\n}\r\n<\/pre>\n<h2><span id=\"SocialConfig\">SocialConfig<\/span><\/h2>\n<pre lang=\"java\">\r\n@Configuration\r\n@EnableSocial\r\npublic class SocialConfig implements SocialConfigurer {\r\n\r\n\t@Autowired\r\n\tprivate DataSource dataSource;\r\n\r\n\t@Autowired\r\n\tprivate MyUserService myUserService;\r\n\r\n\t@Override\r\n\tpublic void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {\r\n\t\tcfConfig.addConnectionFactory(new GoogleConnectionFactory(\r\n\t\t\t\tenv.getProperty(\"google.consumerKey\"),\r\n\t\t\t\tenv.getProperty(\"google.consumerSecret\")));\r\n\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UserIdSource getUserIdSource() {\r\n\t\treturn new AuthenticationNameUserIdSource();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) {\t\t\r\n\t\tJdbcUsersConnectionRepository repository = new JdbcUsersConnectionRepository(dataSource, connectionFactoryLocator, Encryptors.noOpText());\r\n\t\trepository.setConnectionSignUp(new ImplicitConnectionSignup(myUserService));\r\n\t\treturn repository;\r\n\t}\r\n\r\n\t@Bean\r\n\tpublic ConnectController connectController(\r\n\t\t\tConnectionFactoryLocator connectionFactoryLocator,\r\n\t\t\tConnectionRepository connectionRepository) {\r\n\t\treturn new ConnectController(connectionFactoryLocator, connectionRepository);\r\n\t}\r\n\r\n\t@Bean\r\n\tpublic ProviderSignInController providerSignInController(\r\n\t\t\tConnectionFactoryLocator connectionFactoryLocator,\r\n\t\t\tUsersConnectionRepository usersConnectionRepository) {\r\n\t\tProviderSignInController controller = new ProviderSignInController(\r\n\t\t\t\tconnectionFactoryLocator,\r\n\t\t\t\tusersConnectionRepository,\r\n\t\t\t\tnew ImplicitSignInAdapter(new HttpSessionRequestCache()));\r\n\t\tcontroller.setSignUpUrl(\"\/register\");\r\n\t\treturn controller;\r\n\t}\r\n}\r\n<\/pre>\n<h2><span id=\"applicationproperties\">application.properties<\/span><\/h2>\n<p>In src\/main\/resources\/application.properties, add the following lines (example for Google) :<\/p>\n<pre lang=\"properties\">\r\ngoogle.consumerKey=YOUR-CONSUMER-KEY.apps.googleusercontent.com\r\ngoogle.consumerSecret=YOUR-CONSUMER-SECRET\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Prerequistes2 Configuration2.1 SocialUserDetailsServiceImpl.java2.2 SocialConfig2.3 application.properties Prerequistes Please read Java Spring Security &#8211; Database User Configuration SocialUserDetailsServiceImpl.java @Service(&#8220;socialUserDetailsService&#8221;) public class SocialUserDetailsServiceImpl implements SocialUserDetailsService{ private UserDetailsService userDetailsService; @Autowired public SocialUserDetailsServiceImpl(UserDetailsService userDetailsService) { this.userDetailsService = userDetailsService; } @Override public SocialUserDetails loadUserByUserId(String userId) throws UsernameNotFoundException, DataAccessException { return (SocialUserDetails) userDetailsService.loadUserByUsername(userId); } } SocialConfig @Configuration @EnableSocial public class SocialConfig [&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-1648","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1648","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=1648"}],"version-history":[{"count":5,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1648\/revisions"}],"predecessor-version":[{"id":1653,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1648\/revisions\/1653"}],"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=1648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}