diff --git a/pom.xml b/pom.xml index e16ff0c28aa5771411fa8376987593d6b355e801..a420d28abf2d1ba24a22249d3275a0f0dbd68e2a 100644 --- a/pom.xml +++ b/pom.xml @@ -57,8 +57,8 @@ 3.2.10.RELEASE 3.2.1.RELEASE 1.0.5.RELEASE - 1.0.3.RELEASE - 1.0.0.M3 + 1.1.0.RELEASE + 1.0.0.RELEASE 5.1.31 3.4 @@ -68,7 +68,7 @@ 2.1 - 9.1.2.v20140210 + 9.2.9.v20150224 false @@ -77,6 +77,10 @@ + central + http://repo.maven.apache.org/maven2 + + + + - + @@ -326,11 +326,6 @@ 0.0.7 - - org.apache.httpcomponents - httpclient - 4.2.5 - net.sf.opencsv @@ -472,46 +467,6 @@ ${org.springframework.social-version} - - com.google.oauth-client - google-oauth-client-servlet - 1.17.0-rc - - - servlet-api - javax.servlet - - - - - - com.googlecode.googleplus - google-plus-java-api - - - org.codehaus.jackson - jackson-core-asl - - - org.codehaus.jackson - jackson-mapper-asl - - - 0.0.1-SNAPSHOT - - - - com.google.api.client - google-api-client - - - org.codehaus.jackson - jackson-core-asl - - - 1.3.1-alpha - - xml-apis xml-apis @@ -538,6 +493,11 @@ prettytime 3.2.5.Final + + org.apache.httpcomponents + httpclient + 4.3.6 + diff --git a/src/main/java/org/genesys2/server/service/SearchService.java b/src/main/java/org/genesys2/server/service/SearchService.java index 66af2c7544d9c2af7609b3988533639ab67edd52..123904e813668a99c51ef445f5bca4cc4a523d82 100644 --- a/src/main/java/org/genesys2/server/service/SearchService.java +++ b/src/main/java/org/genesys2/server/service/SearchService.java @@ -16,8 +16,6 @@ package org.genesys2.server.service; -import java.util.List; - public interface SearchService { // List autocomplete(String searchQuery, Class clazz); diff --git a/src/main/java/org/genesys2/server/servlet/controller/GoogleSocialController.java b/src/main/java/org/genesys2/server/servlet/controller/GoogleSocialController.java index be254bb2aae19a2009642b7cc5865cdb62738864..3d529b85f6ac67b1e7f826f1dcad078111808ddf 100644 --- a/src/main/java/org/genesys2/server/servlet/controller/GoogleSocialController.java +++ b/src/main/java/org/genesys2/server/servlet/controller/GoogleSocialController.java @@ -35,7 +35,7 @@ import org.springframework.security.web.authentication.SavedRequestAwareAuthenti import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; import org.springframework.social.google.api.Google; import org.springframework.social.google.api.impl.GoogleTemplate; -import org.springframework.social.google.api.userinfo.GoogleUserInfo; +import org.springframework.social.google.api.plus.Person; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @@ -74,11 +74,11 @@ public class GoogleSocialController extends BaseController { } final Google google = new GoogleTemplate(accessToken); - final GoogleUserInfo userInfo = google.userOperations().getUserInfo(); + final Person userInfo = google.plusOperations().getGoogleProfile(); - if (!userService.exists(userInfo.getEmail())) { + if (!userService.exists(userInfo.getAccountEmail())) { final String pwd = RandomStringUtils.randomAlphanumeric(20); - final User user = userService.createAccount(userInfo.getEmail(), pwd, userInfo.getName()); + final User user = userService.createAccount(userInfo.getAccountEmail(), pwd, userInfo.getDisplayName()); userService.userEmailValidated(user.getUuid()); } diff --git a/src/main/java/org/genesys2/server/servlet/util/GoogleOAuthUtil.java b/src/main/java/org/genesys2/server/servlet/util/GoogleOAuthUtil.java index 63b1305447fdfff0c0d609323002ebf3fdf330d5..3adab30a3da031edb0aa67a111d894522e91f3cc 100644 --- a/src/main/java/org/genesys2/server/servlet/util/GoogleOAuthUtil.java +++ b/src/main/java/org/genesys2/server/servlet/util/GoogleOAuthUtil.java @@ -29,11 +29,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; -import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.message.BasicNameValuePair; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -43,7 +43,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.springframework.social.google.api.userinfo.GoogleUserInfo; +import org.springframework.social.google.api.plus.Person; import org.springframework.stereotype.Component; import com.fasterxml.jackson.databind.JsonNode; @@ -54,8 +54,8 @@ public class GoogleOAuthUtil { private static final Log LOG = LogFactory.getLog(GoogleOAuthUtil.class); public static final String LOCAL_GOOGLEAUTH_PATH = "/google/auth"; - private ObjectMapper mapper=new ObjectMapper(); - + private ObjectMapper mapper = new ObjectMapper(); + @Value("${base.url}") private String baseUrl; @@ -70,30 +70,35 @@ public class GoogleOAuthUtil { private UserDetailsService userDetailsService; public String exchangeForAccessToken(HttpServletRequest request) throws IOException { - final HttpClient httpclient = new DefaultHttpClient(); - final HttpPost httppost = new HttpPost("https://accounts.google.com/o/oauth2/token"); + final CloseableHttpClient httpclient = HttpClientBuilder.create().build(); + + try { + final HttpPost httppost = new HttpPost("https://accounts.google.com/o/oauth2/token"); - final List params = new ArrayList<>(); - params.add(new BasicNameValuePair("code", request.getParameter("code"))); - params.add(new BasicNameValuePair("client_id", googleApiClientId)); - params.add(new BasicNameValuePair("client_secret", secret)); - params.add(new BasicNameValuePair("redirect_uri", baseUrl + LOCAL_GOOGLEAUTH_PATH)); - params.add(new BasicNameValuePair("grant_type", "authorization_code")); - params.add(new BasicNameValuePair("scope", "")); + final List params = new ArrayList<>(); + params.add(new BasicNameValuePair("code", request.getParameter("code"))); + params.add(new BasicNameValuePair("client_id", googleApiClientId)); + params.add(new BasicNameValuePair("client_secret", secret)); + params.add(new BasicNameValuePair("redirect_uri", baseUrl + LOCAL_GOOGLEAUTH_PATH)); + params.add(new BasicNameValuePair("grant_type", "authorization_code")); + params.add(new BasicNameValuePair("scope", "")); - httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); + httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); - final HttpResponse response = httpclient.execute(httppost); + final HttpResponse response = httpclient.execute(httppost); - final BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); - final StringBuilder builder = new StringBuilder(); - for (String line = null; (line = reader.readLine()) != null;) { - builder.append(line).append("\n"); - } + final BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); + final StringBuilder builder = new StringBuilder(); + for (String line = null; (line = reader.readLine()) != null;) { + builder.append(line).append("\n"); + } - JsonNode json = mapper.readTree(builder.toString()); + JsonNode json = mapper.readTree(builder.toString()); - return json.has("access_token") ? json.get("access_token").textValue() : null; + return json.has("access_token") ? json.get("access_token").textValue() : null; + } finally { + httpclient.close(); + } } public String getAuthenticationUrl() { @@ -113,12 +118,12 @@ public class GoogleOAuthUtil { return "https://accounts.google.com/o/oauth2/auth?" + query; } - public Authentication googleAuthentication(GoogleUserInfo userInfo) { + public Authentication googleAuthentication(Person userInfo) { try { - final UserDetails userDetails = userDetailsService.loadUserByUsername(userInfo.getEmail()); + final UserDetails userDetails = userDetailsService.loadUserByUsername(userInfo.getAccountEmail()); if (!(userDetails.isEnabled() && userDetails.isAccountNonExpired() && userDetails.isAccountNonLocked() && userDetails.isCredentialsNonExpired())) { - LOG.warn("Google login canceled: Account currently not available: " + userInfo.getEmail()); + LOG.warn("Google login canceled: Account currently not available: " + userInfo.getAccountEmail()); return null; } @@ -127,7 +132,7 @@ public class GoogleOAuthUtil { return authentication; } catch (final UsernameNotFoundException e) { - LOG.warn("Authentication with Google+ failed: No such user " + userInfo.getEmail()); + LOG.warn("Authentication with Google+ failed: No such user " + userInfo.getAccountEmail()); return null; } } diff --git a/src/test/java/org/genesys2/server/oauth/OAuthTokenSerializationTest.java b/src/test/java/org/genesys2/server/oauth/OAuthTokenSerializationTest.java index 1638c601f3181a3f76e537292e0215c49fa622d4..6dae789a648087effda5b08c8d7ceea95faabce6 100644 --- a/src/test/java/org/genesys2/server/oauth/OAuthTokenSerializationTest.java +++ b/src/test/java/org/genesys2/server/oauth/OAuthTokenSerializationTest.java @@ -19,19 +19,16 @@ package org.genesys2.server.oauth; import static org.junit.Assert.*; import java.io.IOException; -import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import org.apache.commons.collections.SetUtils; import org.junit.Test; import org.springframework.security.oauth2.common.DefaultExpiringOAuth2RefreshToken; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; import org.springframework.security.oauth2.common.DefaultOAuth2RefreshToken; -import org.springframework.security.oauth2.common.OAuth2AccessToken; import org.springframework.security.oauth2.common.OAuth2RefreshToken; import com.fasterxml.jackson.core.JsonProcessingException;