diff --git a/pom.xml b/pom.xml
index 76bc40b..b231856 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,11 +21,6 @@
uoa-user-management
[2.0.0-SNAPSHOT, 3.0.0)
-
- eu.dnetlib
- uoa-login-core
- 1.0.3
-
org.slf4j
slf4j-api
@@ -56,6 +51,7 @@
javax.servlet-api
3.0.1
+
org.springframework.security
spring-security-core
@@ -71,6 +67,34 @@
spring-security-web
4.2.1.RELEASE
+
+
+ org.springframework.session
+ spring-session-data-redis
+ 1.3.1.RELEASE
+ pom
+
+
+ biz.paluch.redis
+ lettuce
+ 3.5.0.Final
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+
+
+ org.mitre
+ openid-connect-client
+ 1.3.0
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
+
com.google.code.gson
gson
diff --git a/src/main/java/eu/dnetlib/openaire/usermanagement/api/Test3Service.java b/src/main/java/eu/dnetlib/openaire/usermanagement/api/Test3Service.java
index 2d33c69..43ac843 100644
--- a/src/main/java/eu/dnetlib/openaire/usermanagement/api/Test3Service.java
+++ b/src/main/java/eu/dnetlib/openaire/usermanagement/api/Test3Service.java
@@ -7,9 +7,9 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import eu.dnetlib.openaire.user.dao.SQLMigrationUserDAO;
import eu.dnetlib.openaire.user.ldap.MUserActionsLDAP;
-import eu.dnetlib.openaire.user.login.utils.AuthoritiesMapper;
import eu.dnetlib.openaire.user.pojos.migration.LDAPUser;
import eu.dnetlib.openaire.user.store.DataSourceConnector;
+import eu.dnetlib.openaire.usermanagement.authorization.AuthoritiesMapper;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
diff --git a/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/AuthoritiesMapper.java b/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/AuthoritiesMapper.java
new file mode 100644
index 0000000..f6702db
--- /dev/null
+++ b/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/AuthoritiesMapper.java
@@ -0,0 +1,41 @@
+package eu.dnetlib.openaire.usermanagement.authorization;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import org.apache.log4j.Logger;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class AuthoritiesMapper {
+
+ private static final Logger logger = Logger.getLogger(AuthoritiesMapper.class);
+
+ public static Collection extends GrantedAuthority> map(JsonArray entitlements) {
+ HashSet authorities = new HashSet<>();
+ String regex = "urn:geant:openaire[.]eu:group:([^:]*):?(.*)?:role=member#aai[.]openaire[.]eu";
+ for(JsonElement obj: entitlements) {
+ Matcher matcher = Pattern.compile(regex).matcher(obj.getAsString());
+ if (matcher.find()) {
+ StringBuilder sb = new StringBuilder();
+ if(matcher.group(1) != null && matcher.group(1).length() > 0) {
+ sb.append(matcher.group(1).replace("+-+", "_").replaceAll("[+.]", "_").toUpperCase());
+ }
+ if(matcher.group(2).length() > 0) {
+ sb.append("_");
+ if(matcher.group(2).equals("admins")) {
+ sb.append("MANAGER");
+ } else {
+ sb.append(matcher.group(2).toUpperCase());
+ }
+ }
+ authorities.add(new SimpleGrantedAuthority(sb.toString()));
+ }
+ }
+ return authorities;
+ }
+}
diff --git a/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/Config.java b/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/Config.java
new file mode 100644
index 0000000..e75b421
--- /dev/null
+++ b/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/Config.java
@@ -0,0 +1,49 @@
+package eu.dnetlib.openaire.usermanagement.authorization;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
+import org.springframework.session.web.http.CookieSerializer;
+import org.springframework.session.web.http.DefaultCookieSerializer;
+
+@Configuration
+@EnableRedisHttpSession
+public class Config {
+
+ private static Logger logger = Logger.getLogger(Config.class);
+
+ @Value("${redis.host:localhost}")
+ private String host;
+
+ @Value("${redis.port:6379}")
+ private String port;
+
+ @Value("${redis.password:#{null}}")
+ private String password;
+
+ @Value("${webbapp.front.domain:.openaire.eu}")
+ private String domain;
+
+ @Bean
+ public LettuceConnectionFactory connectionFactory() {
+ logger.info(String.format("Redis connection listens to %s:%s ",host,port));
+ LettuceConnectionFactory factory = new LettuceConnectionFactory(host,Integer.parseInt(port));
+ if(password != null) factory.setPassword(password);
+ return factory;
+ }
+
+ @Bean
+ public CookieSerializer cookieSerializer() {
+ logger.info("Cookie Serializer: Domain is "+domain);
+ DefaultCookieSerializer serializer = new DefaultCookieSerializer();
+ serializer.setCookieName("openAIRESession"); // <1>
+ serializer.setCookiePath("/"); // <2>
+// serializer.setDomainNamePattern(""); //with value "" set's the domain of the service e.g scoobydoo.di.uoa.gr
+ serializer.setDomainName(domain);
+ return serializer;
+ }
+}
diff --git a/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/EntryPoint.java b/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/EntryPoint.java
new file mode 100644
index 0000000..1086333
--- /dev/null
+++ b/src/main/java/eu/dnetlib/openaire/usermanagement/authorization/EntryPoint.java
@@ -0,0 +1,19 @@
+package eu.dnetlib.openaire.usermanagement.authorization;
+
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class EntryPoint implements AuthenticationEntryPoint {
+
+ @Override
+ public void commence(HttpServletRequest request, HttpServletResponse response,
+ AuthenticationException authException) throws IOException {
+ response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage());
+ }
+
+}
+
diff --git a/src/main/resources/eu/dnet/openaire/usermanagement/springContext-dnetOpenaireUsersService.properties b/src/main/resources/eu/dnet/openaire/usermanagement/springContext-dnetOpenaireUsersService.properties
index d630732..2c001ba 100644
--- a/src/main/resources/eu/dnet/openaire/usermanagement/springContext-dnetOpenaireUsersService.properties
+++ b/src/main/resources/eu/dnet/openaire/usermanagement/springContext-dnetOpenaireUsersService.properties
@@ -3,3 +3,12 @@ google.recaptcha.key = 6LfYrU8UAAAAAFsl3m2YhP1uavdmAdFEXBkoY_vd
role-management.url = http://mpagasas.di.uoa.gr:8080/dnet-role-management
client-management.url = http://mpagasas.di.uoa.gr:5100
+
+# Redis
+redis.host = 127.0.0.1
+#redis.port = 6379
+#redis.password
+
+webbapp.front = http://mpagasas.di.uoa.gr:4200/reload
+webbapp.front.path = /
+webbapp.front.domain = .di.uoa.gr
diff --git a/src/main/webapp/WEB-INF/applicationContext.xml b/src/main/webapp/WEB-INF/applicationContext.xml
index 3da3ed3..e66588c 100644
--- a/src/main/webapp/WEB-INF/applicationContext.xml
+++ b/src/main/webapp/WEB-INF/applicationContext.xml
@@ -9,9 +9,7 @@
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
-
-
-
+
@@ -33,12 +31,10 @@
classpath*:/eu/**/applicationContext*.properties
classpath*:/eu/dnetlib/applicationContext-defaultProperties.properties
classpath*:/eu/**/springContext-userManagementService.properties
- classpath*:/eu/**/springContext-userLoginCore.properties
classpath*:/eu/**/springContext-dnetOpenaireUsersService.properties
classpath*:/uoa-override.properties
classpath*:/dnet-override.properties
-
-
\ No newline at end of file
+
diff --git a/src/main/webapp/WEB-INF/springContext-dnetOpenaireUsersService.xml b/src/main/webapp/WEB-INF/springContext-dnetOpenaireUsersService.xml
index 22334a2..70396c6 100644
--- a/src/main/webapp/WEB-INF/springContext-dnetOpenaireUsersService.xml
+++ b/src/main/webapp/WEB-INF/springContext-dnetOpenaireUsersService.xml
@@ -2,12 +2,27 @@
-
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+