diff --git a/wise-webapp/pom.xml b/wise-webapp/pom.xml index 1b865b7f..74c4735e 100644 --- a/wise-webapp/pom.xml +++ b/wise-webapp/pom.xml @@ -86,9 +86,13 @@ org.springframework.security - spring-security-openid + spring-security-oauth2-client + ${org.springframework.addons} + + + org.springframework.security + spring-security-oauth2-jose ${org.springframework.addons} - compile org.springframework diff --git a/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java b/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java index 819c2dfe..00b43c15 100644 --- a/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java +++ b/wise-webapp/src/main/java/com/wisemapping/filter/RequestPropertiesInterceptor.java @@ -45,9 +45,6 @@ public class RequestPropertiesInterceptor extends HandlerInterceptorAdapter { @Value("${security.type}") private String securityType; - @Value("${security.openid.enabled}") - private Boolean openIdEnabled; - public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, Object object) throws Exception { request.setAttribute("google.analytics.enabled", analyticsEnabled); @@ -55,7 +52,6 @@ public class RequestPropertiesInterceptor extends HandlerInterceptorAdapter { request.setAttribute("google.ads.enabled", adsEnabled); request.setAttribute("site.homepage", siteHomepage); request.setAttribute("security.type", securityType); - request.setAttribute("security.openid.enabled", openIdEnabled); // If the property could not be resolved, try to infer one from the request... diff --git a/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java b/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java index 403e093f..c66aaa10 100644 --- a/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java +++ b/wise-webapp/src/main/java/com/wisemapping/security/UserDetailsService.java @@ -19,24 +19,16 @@ package com.wisemapping.security; -import com.wisemapping.exceptions.WiseMappingException; -import com.wisemapping.model.AuthenticationType; import com.wisemapping.model.User; import com.wisemapping.service.UserService; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import org.springframework.dao.DataAccessException; import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.springframework.security.openid.OpenIDAttribute; -import org.springframework.security.openid.OpenIDAuthenticationToken; - -import java.util.Calendar; -import java.util.List; public class UserDetailsService - implements org.springframework.security.core.userdetails.UserDetailsService, org.springframework.security.core.userdetails.AuthenticationUserDetailsService { + implements org.springframework.security.core.userdetails.UserDetailsService{ private UserService userService; private String adminUser; @@ -51,76 +43,76 @@ public class UserDetailsService } } - @Override - @NotNull - public UserDetails loadUserDetails(@NotNull OpenIDAuthenticationToken token) throws UsernameNotFoundException { +// @Override +// @NotNull +// public UserDetails loadUserDetails(@NotNull OpenIDAuthenticationToken token) throws UsernameNotFoundException { +// +// final User tUser = buildUserFromToken(token); +// final User dbUser = userService.getUserBy(tUser.getEmail()); +// +// final User result; +// if (dbUser != null) { +// if (!token.getIdentityUrl().equals(dbUser.getAuthenticatorUri())) { +// throw new IllegalStateException("Identity url for this user can not change:" + token.getIdentityUrl()); +// } +// result = dbUser; +// } else { +// try { +// tUser.setAuthenticationType(AuthenticationType.OPENID); +// tUser.setAuthenticatorUri(token.getIdentityUrl()); +// +// result = userService.createUser(tUser, false, false); +// } catch (WiseMappingException e) { +// throw new IllegalStateException(e); +// } +// +// } +// return new UserDetails(result, isAdmin(result.getEmail())); +// } - final User tUser = buildUserFromToken(token); - final User dbUser = userService.getUserBy(tUser.getEmail()); - - final User result; - if (dbUser != null) { - if (!token.getIdentityUrl().equals(dbUser.getAuthenticatorUri())) { - throw new IllegalStateException("Identity url for this user can not change:" + token.getIdentityUrl()); - } - result = dbUser; - } else { - try { - tUser.setAuthenticationType(AuthenticationType.OPENID); - tUser.setAuthenticatorUri(token.getIdentityUrl()); - - result = userService.createUser(tUser, false, false); - } catch (WiseMappingException e) { - throw new IllegalStateException(e); - } - - } - return new UserDetails(result, isAdmin(result.getEmail())); - } - - @NotNull - private User buildUserFromToken(@NotNull OpenIDAuthenticationToken token) { - final User result = new User(); - - String lastName = null; - String firstName = null; - String email = null; - String fullName = null; - - final List attributes = token.getAttributes(); - for (OpenIDAttribute attribute : attributes) { - if (attribute.getName().equals("email")) { - email = attribute.getValues().get(0); - } - - if (attribute.getName().equals("firstname")) { - firstName = attribute.getValues().get(0); - - } - - if (attribute.getName().equals("lastname")) { - lastName = attribute.getValues().get(0); - } - - if (attribute.getName().equals("fullname")) { - fullName = attribute.getValues().get(0); - } - - } - if (lastName == null || firstName == null) { - result.setFirstname(fullName); - result.setLastname(""); - } else { - result.setLastname(lastName); - result.setFirstname(firstName); - } - result.setEmail(email); - result.setPassword(""); - - final Calendar now = Calendar.getInstance(); - result.setActivationDate(now); - return result; - } +// @NotNull +// private User buildUserFromToken(@NotNull OpenIDAuthenticationToken token) { +// final User result = new User(); +// +// String lastName = null; +// String firstName = null; +// String email = null; +// String fullName = null; +// +// final List attributes = token.getAttributes(); +// for (OpenIDAttribute attribute : attributes) { +// if (attribute.getName().equals("email")) { +// email = attribute.getValues().get(0); +// } +// +// if (attribute.getName().equals("firstname")) { +// firstName = attribute.getValues().get(0); +// +// } +// +// if (attribute.getName().equals("lastname")) { +// lastName = attribute.getValues().get(0); +// } +// +// if (attribute.getName().equals("fullname")) { +// fullName = attribute.getValues().get(0); +// } +// +// } +// if (lastName == null || firstName == null) { +// result.setFirstname(fullName); +// result.setLastname(""); +// } else { +// result.setLastname(lastName); +// result.setFirstname(firstName); +// } +// result.setEmail(email); +// result.setPassword(""); +// +// final Calendar now = Calendar.getInstance(); +// result.setActivationDate(now); +// return result; +// } private boolean isAdmin(@Nullable String email) { return email != null && adminUser != null && email.trim().endsWith(adminUser); diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java index 0795a8e1..feffe5ee 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java @@ -45,16 +45,16 @@ public class LoginController { return result; } - @RequestMapping(value = "loginopenid", method = RequestMethod.GET) - protected ModelAndView showLoginOpenIdPage() { - final User user = Utils.getUser(false); - ModelAndView result; - if (user != null) { - result = new ModelAndView("forward:/c/maps/"); - } else { - result = new ModelAndView("loginopenid"); - } - return result; - } +// @RequestMapping(value = "loginopenid", method = RequestMethod.GET) +// protected ModelAndView showLoginOpenIdPage() { +// final User user = Utils.getUser(false); +// ModelAndView result; +// if (user != null) { +// result = new ModelAndView("forward:/c/maps/"); +// } else { +// result = new ModelAndView("loginopenid"); +// } +// return result; +// } } diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/PublicPagesController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/PublicPagesController.java index e2fce9bd..e6fba763 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/PublicPagesController.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/PublicPagesController.java @@ -48,11 +48,6 @@ public class PublicPagesController { return "crew"; } - @RequestMapping(value = "GCFInstall") - public String showGCFInstallationPage() { - return "GCFInstall"; - } - @RequestMapping(value = "keyboard") public String newsPage() { return "keyboard"; diff --git a/wise-webapp/src/main/webapp/WEB-INF/app.properties b/wise-webapp/src/main/webapp/WEB-INF/app.properties index 162dbaa3..38b8171b 100755 --- a/wise-webapp/src/main/webapp/WEB-INF/app.properties +++ b/wise-webapp/src/main/webapp/WEB-INF/app.properties @@ -138,9 +138,6 @@ security.ldap.auth.attribute=mail security.ldap.lastName.attribute=sn security.ldap.firstName.attribute=givenName -# Enable OpenId Authentication. -security.openid.enabled=false - # REST Documentation # # This properties are used for REST API Documentation( http://localhost:8080/wisemapping/doc/rest/index.html) @@ -149,6 +146,14 @@ documentation.services.basePath=http://localhost:8080/service documentation.services.version=3.0.1 +# OAuth2 Security + +#spring.security.oauth2.client.registration.google.client-id= +#spring.security.oauth2.client.registration.google.client-secret= + +#spring.security.oauth2.client.registration.facebook.client-id= +#spring.security.oauth2.client.registration.facebook.client-secret= + diff --git a/wise-webapp/src/main/webapp/WEB-INF/classes/log4j.properties b/wise-webapp/src/main/webapp/WEB-INF/classes/log4j.properties index ca1eddf0..7ed90501 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/classes/log4j.properties +++ b/wise-webapp/src/main/webapp/WEB-INF/classes/log4j.properties @@ -1,6 +1,6 @@ -log4j.rootLogger=WARN, stdout, R -log4j.logger.com.wisemapping=INFO,stdout,R -log4j.logger.org.springframework=INFO,stdout,R +log4j.rootLogger=TRACE, stdout, R +log4j.logger.com.wisemapping=TRACE,stdout,R +log4j.logger.org.springframework=TRACE,stdout,R log4j.logger.org.hibernate.engine.internal.StatefulPersistenceContext=ERROR,stdout,R # Stdout logger � @@ -9,7 +9,7 @@ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p %c - %m%n -# File Writter Logger � +# File Writer Logger � log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=wisemapping.log diff --git a/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml b/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml index a12cb311..a4e3c70d 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml @@ -1,6 +1,6 @@ + "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> @@ -37,16 +37,6 @@ - - - - - - - - - - @@ -68,19 +58,12 @@ - - - - - - - diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml index 05361f7c..5808bbc6 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml @@ -15,7 +15,6 @@ - @@ -23,7 +22,6 @@ - @@ -58,31 +56,6 @@ authentication-failure-url="/c/login?login_error=2" login-processing-url="/c/perform-login"/> - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wise-webapp/src/main/webapp/css/openid.css b/wise-webapp/src/main/webapp/css/openid.css deleted file mode 100644 index adea5107..00000000 --- a/wise-webapp/src/main/webapp/css/openid.css +++ /dev/null @@ -1,69 +0,0 @@ -/* - Simple OpenID Plugin - http://code.google.com/p/openid-selector/ - - This code is licensed under the New BSD License. -*/ - -#openid_form { - width: 580px; -} - -#openid_form legend { - font-weight: bold; -} - -#openid_choice { - display: none; -} - -#openid_input_area { - clear: both; - padding: 10px; -} - -#openid_btns, #openid_btns br { - clear: both; -} - -#openid_highlight { - padding: 3px; - background-color: #FFFCC9; - float: left; -} - -.openid_large_btn { - width: 100px; - height: 60px; -/* fix for IE 6 only: http://en.wikipedia.org/wiki/CSS_filter#Underscore_hack */ - _width: 102px; - _height: 62px; - - border: 1px solid #DDD; - margin: 3px; - float: left; -} - -.openid_small_btn { - width: 24px; - height: 24px; -/* fix for IE 6 only: http://en.wikipedia.org/wiki/CSS_filter#Underscore_hack */ - _width: 26px; - _height: 26px; - - border: 1px solid #DDD; - margin: 3px; - float: left; -} - -a.openid_large_btn:focus { - outline: none; -} - -a.openid_large_btn:focus { - -moz-outline-style: none; -} - -.openid_selected { - border: 4px solid #DDD; -} \ No newline at end of file diff --git a/wise-webapp/src/main/webapp/js/openid-en.js b/wise-webapp/src/main/webapp/js/openid-en.js deleted file mode 100644 index 2b68c665..00000000 --- a/wise-webapp/src/main/webapp/js/openid-en.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - Simple OpenID Plugin - http://code.google.com/p/openid-selector/ - - This code is licensed under the New BSD License. -*/ - -var providers_large = { - google : { - name : 'Google', - url : 'https://www.google.com/accounts/o8/id' - }, - yahoo : { - name : 'Yahoo', - url : 'http://me.yahoo.com/' - }, - aol : { - name : 'AOL', - label : 'Enter your AOL screenname.', - url : 'http://openid.aol.com/{username}' - }, - myopenid : { - name : 'MyOpenID', - label : 'Enter your MyOpenID username.', - url : 'http://{username}.myopenid.com/' - }, - openid : { - name : 'OpenID', - label : 'Enter your OpenID.', - url : null - } -}; - -var providers_small = { - livejournal : { - name : 'LiveJournal', - label : 'Enter your Livejournal username.', - url : 'http://{username}.livejournal.com/' - }, - /* flickr: { - name: 'Flickr', - label: 'Enter your Flickr username.', - url: 'http://flickr.com/{username}/' - }, */ - /* technorati: { - name: 'Technorati', - label: 'Enter your Technorati username.', - url: 'http://technorati.com/people/technorati/{username}/' - }, */ - wordpress : { - name : 'Wordpress', - label : 'Enter your Wordpress.com username.', - url : 'http://{username}.wordpress.com/' - }, - blogger : { - name : 'Blogger', - label : 'Your Blogger account', - url : 'http://{username}.blogspot.com/' - }, - verisign : { - name : 'Verisign', - label : 'Your Verisign username', - url : 'http://{username}.pip.verisignlabs.com/' - }, - /* vidoop: { - name: 'Vidoop', - label: 'Your Vidoop username', - url: 'http://{username}.myvidoop.com/' - }, */ - /* launchpad: { - name: 'Launchpad', - label: 'Your Launchpad username', - url: 'https://launchpad.net/~{username}' - }, */ - claimid : { - name : 'ClaimID', - label : 'Your ClaimID username', - url : 'http://claimid.com/{username}' - }, - clickpass : { - name : 'ClickPass', - label : 'Enter your ClickPass username', - url : 'http://clickpass.com/public/{username}' - }, - google_profile : { - name : 'Google Profile', - label : 'Enter your Google Profile username', - url : 'http://www.google.com/profiles/{username}' - } -}; - -openid.locale = 'en'; -openid.sprite = 'en'; // reused in german& japan localization -openid.demo_text = 'In client demo mode. Normally would have submitted OpenID:'; -openid.signin_text = 'Sign-In'; -openid.image_title = 'log in with {provider}'; diff --git a/wise-webapp/src/main/webapp/js/openid-jquery.js b/wise-webapp/src/main/webapp/js/openid-jquery.js deleted file mode 100644 index 085ab3a8..00000000 --- a/wise-webapp/src/main/webapp/js/openid-jquery.js +++ /dev/null @@ -1,203 +0,0 @@ -/* - Simple OpenID Plugin - http://code.google.com/p/openid-selector/ - - This code is licensed under the New BSD License. - */ - -var providers; -var openid; -(function ($) { - openid = { - version: '1.3', // version constant - demo: false, - demo_text: null, - cookie_expires: 6 * 30, // 6 months. - cookie_name: 'openid_provider', - cookie_path: '/', - - img_path: 'images/', - locale: null, // is set in openid-.js - sprite: null, // usually equals to locale, is set in - // openid-.js - signin_text: null, // text on submit button on the form - all_small: false, // output large providers w/ small icons - no_sprite: false, // don't use sprite image - image_title: '{provider}', // for image title - - input_id: null, - provider_url: null, - provider_id: null, - - /** - * Class constructor - * - * @return {Void} - */ - init: function (input_id) { - providers = $.extend({}, providers_large, providers_small); - var openid_btns = $('#openid_btns'); - this.input_id = input_id; - $('#openid_choice').show(); - $('#openid_input_area').empty(); - var i = 0; - // add box for each provider - var id, box; - for (id in providers_large) { - box = this.getBoxHTML(id, providers_large[id], (this.all_small ? 'small' : 'large'), i++); - openid_btns.append(box); - } - if (providers_small) { - openid_btns.append('
'); - for (id in providers_small) { - box = this.getBoxHTML(id, providers_small[id], 'small', i++); - openid_btns.append(box); - } - } - $('#openid_form').submit(this.submit); - var box_id = this.readCookie(); - if (box_id) { - this.signin(box_id, true); - } - }, - - /** - * @return {String} - */ - getBoxHTML: function (box_id, provider, box_size, index) { - if (this.no_sprite) { - var image_ext = box_size == 'small' ? '.ico.gif' : '.gif'; - return ''; - } - var x = box_size == 'small' ? -index * 24 : -index * 100; - var y = box_size == 'small' ? -60 : 0; - return ''; - }, - - /** - * Provider image click - * - * @return {Void} - */ - signin: function (box_id, onload) { - var provider = providers[box_id]; - if (!provider) { - return; - } - this.highlight(box_id); - this.setCookie(box_id); - this.provider_id = box_id; - this.provider_url = provider.url; - // prompt user for input? - if (provider.label) { - this.useInputBox(provider); - } else { - $('#openid_input_area').empty(); - if (!onload) { - $('#openid_form').submit(); - } - } - }, - - /** - * Sign-in button click - * - * @return {Boolean} - */ - submit: function () { - var url = openid.provider_url; - if (url) { - url = url.replace('{username}', $('#openid_username').val()); - openid.setOpenIdUrl(url); - } - if (openid.demo) { - alert(openid.demo_text + "\r\n" + document.getElementById(openid.input_id).value); - return false; - } - if (url && url.indexOf("javascript:") == 0) { - url = url.substr("javascript:".length); - eval(url); - return false; - } - return true; - }, - - /** - * @return {Void} - */ - setOpenIdUrl: function (url) { - var hidden = document.getElementById(this.input_id); - if (hidden != null) { - hidden.value = url; - } else { - $('#openid_form').append(''); - } - }, - - /** - * @return {Void} - */ - highlight: function (box_id) { - // remove previous highlight. - var highlight = $('#openid_highlight'); - if (highlight) { - highlight.replaceWith($('#openid_highlight a')[0]); - } - // add new highlight. - $('.' + box_id).wrap('
'); - }, - - setCookie: function (value) { - var date = new Date(); - date.setTime(date.getTime() + (this.cookie_expires * 24 * 60 * 60 * 1000)); - var expires = "; expires=" + date.toGMTString(); - document.cookie = this.cookie_name + "=" + value + expires + "; path=" + this.cookie_path; - }, - - readCookie: function () { - var nameEQ = this.cookie_name + "="; - var ca = document.cookie.split(';'); - for (var i = 0; i < ca.length; i++) { - var c = ca[i]; - while (c.charAt(0) == ' ') - c = c.substring(1, c.length); - if (c.indexOf(nameEQ) == 0) - return c.substring(nameEQ.length, c.length); - } - return null; - }, - - /** - * @return {Void} - */ - useInputBox: function (provider) { - var input_area = $('#openid_input_area'); - var html = ''; - var id = 'openid_username'; - var value = ''; - var label = provider.label; - var style = ''; - if (label) { - html = '

' + label + '

'; - } - if (provider.name == 'OpenID') { - id = this.input_id; - value = 'http://'; - style = 'background: #FFF url(' + this.img_path + 'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;'; - } - html += '' - + ''; - input_area.empty(); - input_area.append(html); - $('#' + id).focus(); - }, - - setDemoMode: function (demoMode) { - this.demo = demoMode; - } - }; -})(jQuery); diff --git a/wise-webapp/src/main/webapp/jsp/GCFInstall.jsp b/wise-webapp/src/main/webapp/jsp/GCFInstall.jsp deleted file mode 100644 index 0c9f1337..00000000 --- a/wise-webapp/src/main/webapp/jsp/GCFInstall.jsp +++ /dev/null @@ -1,18 +0,0 @@ -<%@page pageEncoding="UTF-8" %> -<%@include file="/jsp/init.jsp" %> - - -
-
- -
-
- - - \ No newline at end of file diff --git a/wise-webapp/src/main/webapp/jsp/GCFPluginRequired.jsp b/wise-webapp/src/main/webapp/jsp/GCFPluginRequired.jsp deleted file mode 100644 index 0321a260..00000000 --- a/wise-webapp/src/main/webapp/jsp/GCFPluginRequired.jsp +++ /dev/null @@ -1,11 +0,0 @@ -<%@page pageEncoding="UTF-8" %> -<%@include file="/jsp/init.jsp" %> - -

- -

- -
- -
- diff --git a/wise-webapp/src/main/webapp/jsp/login.jsp b/wise-webapp/src/main/webapp/jsp/login.jsp index 7f4a5763..9d590e09 100644 --- a/wise-webapp/src/main/webapp/jsp/login.jsp +++ b/wise-webapp/src/main/webapp/jsp/login.jsp @@ -76,16 +76,9 @@ - -

- . -

-
-
diff --git a/wise-webapp/src/main/webapp/jsp/loginOpenId.jsp b/wise-webapp/src/main/webapp/jsp/loginOpenId.jsp deleted file mode 100644 index 6abbbb82..00000000 --- a/wise-webapp/src/main/webapp/jsp/loginOpenId.jsp +++ /dev/null @@ -1,56 +0,0 @@ -<%@page pageEncoding="UTF-8" %> -<%@ include file="/jsp/init.jsp" %> - -<%--@elvariable id="isHsql" type="boolean"--%> - - - - - - - - - - -
-

- -
-
-
-
- -
-
-
-
-
-
- - -
- -
-
- -
-
- -
-
-

-