diff --git a/CHANGELOG.md b/CHANGELOG.md index 95a7f03..71540c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,9 @@ +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + # Changelog for "oidc-library" +## [v1.1.0-SNAPSHOT] +- Added avatar configuration and retrieve helper method (#19726) + ## [v1.0.0-SNAPSHOT] - First release (#19225) (#19226) (#19227) - - -This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). \ No newline at end of file diff --git a/pom.xml b/pom.xml index fb16d9b..c227b67 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.gcube.common oidc-library - 1.0.0-SNAPSHOT + 1.1.0-SNAPSHOT diff --git a/profile.xml b/profile.xml deleted file mode 100644 index 0fe7047..0000000 --- a/profile.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Portlet - - ${project.description} - PortletUser - ${project.artifactId} - 1.0.0 - - - ${project.artifactId} - ${project.description} - - ${project.groupId} - ${project.artifactId} - ${project.version} - - - ${project.build.finalName}.${project.packaging} - - - - - diff --git a/service_archive.xml b/service_archive.xml deleted file mode 100644 index 7fb882c..0000000 --- a/service_archive.xml +++ /dev/null @@ -1,18 +0,0 @@ - - org.apache.maven.plugins - maven-assembly-plugin - - - descriptor.xml - - - - - servicearchive - install - - single - - - - \ No newline at end of file diff --git a/src/main/java/org/gcube/oidc/rest/JWTToken.java b/src/main/java/org/gcube/oidc/rest/JWTToken.java index b7ebccf..083664c 100644 --- a/src/main/java/org/gcube/oidc/rest/JWTToken.java +++ b/src/main/java/org/gcube/oidc/rest/JWTToken.java @@ -65,7 +65,7 @@ public class JWTToken implements Serializable { return (String) token.get("refresh_token"); } - public String getAsBearer() { + public String getAccessTokenAsBearer() { return "Bearer " + getAccessTokenString(); } diff --git a/src/main/java/org/gcube/oidc/rest/OpenIdConnectConfiguration.java b/src/main/java/org/gcube/oidc/rest/OpenIdConnectConfiguration.java index 0429815..d3ee867 100644 --- a/src/main/java/org/gcube/oidc/rest/OpenIdConnectConfiguration.java +++ b/src/main/java/org/gcube/oidc/rest/OpenIdConnectConfiguration.java @@ -18,4 +18,6 @@ public interface OpenIdConnectConfiguration { URL getAuthorizationURL(); + URL getAvatarURL(); + } \ No newline at end of file diff --git a/src/main/java/org/gcube/oidc/rest/OpenIdConnectRESTHelper.java b/src/main/java/org/gcube/oidc/rest/OpenIdConnectRESTHelper.java index fadef61..574bd23 100644 --- a/src/main/java/org/gcube/oidc/rest/OpenIdConnectRESTHelper.java +++ b/src/main/java/org/gcube/oidc/rest/OpenIdConnectRESTHelper.java @@ -1,7 +1,9 @@ package org.gcube.oidc.rest; import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; @@ -93,10 +95,10 @@ public class OpenIdConnectRESTHelper { return JWTToken.fromString(sb.toString()); } - protected static HttpURLConnection performURLEncodedPOSTSendData(URL tokenURL, Map> params, + protected static HttpURLConnection performURLEncodedPOSTSendData(URL url, Map> params, String authorization) throws IOException, ProtocolException, UnsupportedEncodingException { - HttpURLConnection con = (HttpURLConnection) tokenURL.openConnection(); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); @@ -193,7 +195,7 @@ public class OpenIdConnectRESTHelper { params.put("client_id", Arrays.asList(URLEncoder.encode(clientId, "UTF-8"))); params.put("refresh_token", Arrays.asList(token.getRefreshTokenString())); logger.info("Performing logut from OIDC server with URL: " + logoutUrl); - HttpURLConnection httpURLConnection = performURLEncodedPOSTSendData(logoutUrl, params, token.getAsBearer()); + HttpURLConnection httpURLConnection = performURLEncodedPOSTSendData(logoutUrl, params, token.getAccessTokenAsBearer()); int responseCode = httpURLConnection.getResponseCode(); if (responseCode == 204) { logger.info("Logout performed correctly"); @@ -203,4 +205,27 @@ public class OpenIdConnectRESTHelper { } return false; } + + public static byte[] getUserAvatar(URL avatarURL, JWTToken token) throws Exception { + HttpURLConnection conn = (HttpURLConnection) avatarURL.openConnection(); + conn.setRequestMethod("GET"); + conn.setDoOutput(false); + conn.setDoInput(true); + conn.setRequestProperty("Accept", "image/png, image/jpeg, image/gif"); + if (token != null) { + String authorization = token.getAccessTokenAsBearer(); + logger.debug("Adding authorization header as: {}", authorization); + conn.setRequestProperty("Authorization", authorization); + } + InputStream is = conn.getInputStream(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + int nRead; + byte[] data = new byte[1024]; + while ((nRead = is.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + + buffer.flush(); + return buffer.toByteArray(); + } } \ No newline at end of file