diff --git a/pom.xml b/pom.xml
index 65a7d11..362b933 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
eu.dnetlib
- dnet45-parent
+ uoa-spring-boot-parent
1.0.0
login-service
@@ -11,42 +11,11 @@
war
login-service
login-service
-
- 1.8
-
- https://code-repo.d4science.org/MaDgIK/login-service
- scm:git:gitea@code-repo.d4science.org:MaDgIK/login-service.git
scm:git:gitea@code-repo.d4science.org:MaDgIK/login-service.git
- login-service-1.0.0
+ HEAD
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- 1.5.8.RELEASE
- pom
- import
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
- provided
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
org.springframework.boot
spring-boot-starter-security
@@ -73,6 +42,18 @@
+
+
+ io.springfox
+ springfox-swagger2
+ ${swagger-version}
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger-version}
+
@@ -87,6 +68,7 @@
spring-boot-maven-plugin
eu.dnetlib.loginservice.LoginServiceApplication
+ true
diff --git a/src/main/java/eu/dnetlib/loginservice/LoginServiceApplication.java b/src/main/java/eu/dnetlib/loginservice/LoginServiceApplication.java
index 0d27afe..aeac5b7 100644
--- a/src/main/java/eu/dnetlib/loginservice/LoginServiceApplication.java
+++ b/src/main/java/eu/dnetlib/loginservice/LoginServiceApplication.java
@@ -1,5 +1,6 @@
package eu.dnetlib.loginservice;
+import eu.dnetlib.loginservice.properties.APIProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -12,7 +13,7 @@ import eu.dnetlib.loginservice.properties.Properties;
@PropertySource("classpath:authentication.properties"),
@PropertySource(value = "classpath:dnet-override.properties", ignoreResourceNotFound = true)
})
-@EnableConfigurationProperties({Properties.class})
+@EnableConfigurationProperties({Properties.class, APIProperties.class})
public class LoginServiceApplication {
public static void main(String[] args) {
diff --git a/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java b/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java
index 99d0448..1dacdc9 100644
--- a/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java
+++ b/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java
@@ -1,7 +1,8 @@
package eu.dnetlib.loginservice.controllers;
import eu.dnetlib.loginservice.properties.Properties;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,7 +14,7 @@ import java.util.Map;
@RestController
public class HealthController {
- private final Logger log = Logger.getLogger(this.getClass());
+ private final Logger log = LogManager.getLogger(this.getClass());
private final Properties properties;
@Autowired
@@ -32,14 +33,18 @@ public class HealthController {
public Map checkEverything() {
Map response = new HashMap<>();
response.put("authentication.domain", properties.getDomain());
+ response.put("authentication.keycloak", properties.getKeycloak().toString());
response.put("authentication.redis.host", properties.getRedis().getHost());
+ response.put("authentication.oidc.issuer", properties.getOidc().getIssuer());
+ response.put("authentication.oidc.logout", properties.getOidc().getLogout());
+ response.put("authentication.oidc.home", properties.getOidc().getHome());
+ response.put("authentication.oidc.scope", properties.getOidc().getScope());
response.put("authentication.oidc.id", properties.getOidc().getId());
response.put("authentication.oidc.secret", properties.getOidc().getSecret());
- response.put("authentication.oidc.issuer", properties.getOidc().getIssuer());
- response.put("authentication.oidc.home", properties.getOidc().getHome());
- response.put("authentication.oidc.logout", properties.getOidc().getLogout());
- response.put("authentication.oidc.scope", properties.getOidc().getScope());
+ response.put("authentication.session", properties.getSession());
+ response.put("authentication.accessToken", properties.getAccessToken());
response.put("authentication.redirect", properties.getRedirect());
+ response.put("authentication.authorities-mappe", properties.getAuthoritiesMapper());
return response;
}
}
diff --git a/src/main/java/eu/dnetlib/loginservice/properties/APIProperties.java b/src/main/java/eu/dnetlib/loginservice/properties/APIProperties.java
new file mode 100644
index 0000000..96e5256
--- /dev/null
+++ b/src/main/java/eu/dnetlib/loginservice/properties/APIProperties.java
@@ -0,0 +1,38 @@
+package eu.dnetlib.loginservice.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties("api")
+public class APIProperties {
+
+ private String title;
+ private String description;
+ private String version;
+
+ public APIProperties() {
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+}
diff --git a/src/main/java/eu/dnetlib/loginservice/security/RedisConfig.java b/src/main/java/eu/dnetlib/loginservice/security/RedisConfig.java
index 20fe0a5..d75f09f 100644
--- a/src/main/java/eu/dnetlib/loginservice/security/RedisConfig.java
+++ b/src/main/java/eu/dnetlib/loginservice/security/RedisConfig.java
@@ -1,7 +1,8 @@
package eu.dnetlib.loginservice.security;
import eu.dnetlib.loginservice.properties.Properties;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -16,7 +17,7 @@ public class RedisConfig {
private final Properties properties;
- private static final Logger logger = Logger.getLogger(RedisConfig.class);
+ private static final Logger logger = LogManager.getLogger(RedisConfig.class);
@Autowired
public RedisConfig(Properties properties) {
diff --git a/src/main/java/eu/dnetlib/loginservice/security/SwaggerConfig.java b/src/main/java/eu/dnetlib/loginservice/security/SwaggerConfig.java
new file mode 100644
index 0000000..bf0575f
--- /dev/null
+++ b/src/main/java/eu/dnetlib/loginservice/security/SwaggerConfig.java
@@ -0,0 +1,68 @@
+package eu.dnetlib.loginservice.security;
+
+import eu.dnetlib.loginservice.properties.APIProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * Swagger configuration class
+ */
+@Configuration
+@Profile({"swagger"})
+@EnableSwagger2
+public class SwaggerConfig extends WebMvcConfigurerAdapter {
+
+ private final APIProperties apiProperties;
+
+ @Autowired
+ public SwaggerConfig(APIProperties apiProperties) {
+ this.apiProperties = apiProperties;
+ }
+
+
+ @Bean
+ public Docket createRestApi() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("eu.dnetlib.loginservice.controllers"))
+ .paths(PathSelectors.any())
+ .build();
+ }
+
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ .title(this.apiProperties.getTitle())
+ .description(this.apiProperties.getDescription())
+ .version(this.apiProperties.getVersion())
+ .build();
+ }
+
+ @Override
+ public void addViewControllers(ViewControllerRegistry registry) {
+ registry.addRedirectViewController("/v2/api-docs", "/v2/api-docs");
+ registry.addRedirectViewController("/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui");
+ registry.addRedirectViewController("/swagger-resources/configuration/security", "/swagger-resources/configuration/security");
+ registry.addRedirectViewController("/swagger-resources", "/swagger-resources");
+ }
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/swagger-ui.html**").addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+ }
+
+}
+
diff --git a/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationFilter.java b/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationFilter.java
index 5fd35fa..54b9330 100644
--- a/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationFilter.java
+++ b/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationFilter.java
@@ -2,7 +2,8 @@ package eu.dnetlib.loginservice.security.oidc;
import eu.dnetlib.loginservice.properties.Properties;
import eu.dnetlib.loginservice.utils.Redirect;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.mitre.openid.connect.client.OIDCAuthenticationFilter;
import javax.servlet.http.HttpServletRequest;
@@ -11,7 +12,7 @@ import java.io.IOException;
public class OpenAIREAuthenticationFilter extends OIDCAuthenticationFilter {
- private final static Logger logger = Logger.getLogger(OpenAIREAuthenticationSuccessHandler.class);
+ private final static Logger logger = LogManager.getLogger(OpenAIREAuthenticationSuccessHandler.class);
private final Properties properties;
public OpenAIREAuthenticationFilter(Properties properties) {
diff --git a/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationSuccessHandler.java b/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationSuccessHandler.java
index 4201ea1..f17f4c8 100644
--- a/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationSuccessHandler.java
+++ b/src/main/java/eu/dnetlib/loginservice/security/oidc/OpenAIREAuthenticationSuccessHandler.java
@@ -2,7 +2,8 @@ package eu.dnetlib.loginservice.security.oidc;
import com.google.gson.JsonParser;
import eu.dnetlib.loginservice.properties.Properties;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
@@ -23,7 +24,7 @@ import java.util.regex.Pattern;
@Configuration
public class OpenAIREAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
- private static final Logger logger = Logger.getLogger(OpenAIREAuthenticationSuccessHandler.class);
+ private static final Logger logger = LogManager.getLogger(OpenAIREAuthenticationSuccessHandler.class);
private final Properties properties;
@Autowired
diff --git a/src/main/java/eu/dnetlib/loginservice/utils/AuthoritiesMapper.java b/src/main/java/eu/dnetlib/loginservice/utils/AuthoritiesMapper.java
index da9321e..5cce7e3 100644
--- a/src/main/java/eu/dnetlib/loginservice/utils/AuthoritiesMapper.java
+++ b/src/main/java/eu/dnetlib/loginservice/utils/AuthoritiesMapper.java
@@ -2,7 +2,8 @@ package eu.dnetlib.loginservice.utils;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
@@ -13,7 +14,7 @@ import java.util.regex.Pattern;
public class AuthoritiesMapper {
- private static final Logger logger = Logger.getLogger(AuthoritiesMapper.class);
+ private static final Logger logger = LogManager.getLogger(AuthoritiesMapper.class);
public static Collection extends GrantedAuthority> map(JsonArray entitlements) {
HashSet authorities = new HashSet<>();
diff --git a/src/main/java/eu/dnetlib/loginservice/utils/Redirect.java b/src/main/java/eu/dnetlib/loginservice/utils/Redirect.java
index 909fd81..fb61680 100644
--- a/src/main/java/eu/dnetlib/loginservice/utils/Redirect.java
+++ b/src/main/java/eu/dnetlib/loginservice/utils/Redirect.java
@@ -3,7 +3,8 @@ package eu.dnetlib.loginservice.utils;
import eu.dnetlib.loginservice.properties.Properties;
import org.apache.http.client.utils.URIBuilder;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -12,7 +13,7 @@ import java.util.Enumeration;
public class Redirect {
- private final static Logger logger = Logger.getLogger(Redirect.class);
+ private final static Logger logger = LogManager.getLogger(Redirect.class);
private static String getDomain(String url) throws URISyntaxException {
URIBuilder uriBuilder = new URIBuilder(url);
diff --git a/src/main/resources/authentication.properties b/src/main/resources/authentication.properties
index a8bf4ee..07868b3 100644
--- a/src/main/resources/authentication.properties
+++ b/src/main/resources/authentication.properties
@@ -1,24 +1,21 @@
authentication.domain=di.uoa.gr
-#keycloak
-#authentication.keycloak=true
-#authentication.oidc.issuer=https://aai-dev.egi.eu/auth/realms/egi
-#authentication.oidc.logout=https://aai-dev.egi.eu/auth/realms/egi/protocol/openid-connect/logout
-
-#openid connect
authentication.keycloak=false
authentication.oidc.issuer=https://aai.openaire.eu/oidc/
authentication.oidc.logout=https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=
+authentication.oidc.home=http://mpagasas.di.uoa.gr:19080/login-service/openid_connect_login
+authentication.oidc.scope=openid,profile,email,eduperson_entitlement
+authentication.oidc.id=id
+authentication.oidc.secret=secret
-authentication.oidc.home=http://rudie.di.uoa.gr:8580/openid_connect_login
-authentication.oidc.scope=openid,profile,email,eduperson_entitlement,eduperson_scoped_affiliation,eduperson_unique_id,offline_access
-authentication.oidc.id=a8ec6e5c-7bee-46aa-9a6f-18baca923582
-authentication.oidc.secret=2A91F53A1551AC33
+authentication.session=openAIRESession
+authentication.accessToken=AccessToken
+authentication.redirect=http://mpagasas.di.uoa.gr:4600/reload
-authentication.session=EGISession
-authentication.accessToken=EGIAccessToken
-
-authentication.redirect=http://scoobydoo.di.uoa.gr:4000/reload
# Currently, this is the only available mapper, set to null or anything else will ignore this.
-authentication.authorities-mapper=null
-server.port=8580
\ No newline at end of file
+authentication.authorities-mapper=openAIREMapper
+
+## API Documentation Properties
+api.title = Login Service
+api.description = Login service provides methods to authenticate users through AAI provider and retrieve information of authenticated user.
+api.version = ${project.version}
\ No newline at end of file
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
deleted file mode 100644
index d9dc948..0000000
--- a/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-log4j.rootLogger = DEBUG, R
-
-log4j.logger.eu.dnetlib = DEBUG
-log4j.logger.org.springframework = DEBUG, S
-
-log4j.additivity.org.springframework = false
-
-log4j.appender.R=org.apache.log4j.RollingFileAppender
-log4j.appender.R.File=/var/log/dnet/login-service/login-service.log
-log4j.appender.R.MaxFileSize=10MB
-log4j.appender.R.MaxBackupIndex=10
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
-
-log4j.appender.S=org.apache.log4j.RollingFileAppender
-log4j.appender.S.File=/var/log/dnet/login-service/login-service-spring.log
-log4j.appender.S.MaxFileSize=10MB
-log4j.appender.S.MaxBackupIndex=10
-log4j.appender.S.layout=org.apache.log4j.PatternLayout
-log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
\ No newline at end of file
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..ff41fc8
--- /dev/null
+++ b/src/main/resources/log4j2.xml
@@ -0,0 +1,39 @@
+
+
+
+
+ %d %p %t [%c] - %m%n
+
+
+
+
+
+
+ ${LOG_PATTERN}
+
+
+
+
+
+
+
+
+ ${LOG_PATTERN}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file