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