From 58d40a97f9a56bc69e76a79f7bf8fc83d6760896 Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Thu, 25 Nov 2021 00:20:57 +0200 Subject: [PATCH] Add plugin for maven spring boot run. Add health check for properties --- pom.xml | 14 ++++++++++ .../controllers/HealthController.java | 28 +++++++++++++++++++ .../controllers/UserController.java | 19 +++++++------ .../security/initiliazers/Primitives.java | 2 -- .../security/initiliazers/Services.java | 1 - .../services/UserInfoService.java | 20 +++++++++++++ 6 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 src/main/java/eu/dnetlib/loginservice/services/UserInfoService.java diff --git a/pom.xml b/pom.xml index 769a683..8347e0a 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,20 @@ + + org.springframework.boot + spring-boot-maven-plugin + + eu.dnetlib.loginservice.LoginServiceApplication + + + + + repackage + + + + maven-war-plugin 2.6 diff --git a/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java b/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java index fb7d4d0..99d0448 100644 --- a/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java +++ b/src/main/java/eu/dnetlib/loginservice/controllers/HealthController.java @@ -1,17 +1,45 @@ package eu.dnetlib.loginservice.controllers; +import eu.dnetlib.loginservice.properties.Properties; import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; + @RestController public class HealthController { private final Logger log = Logger.getLogger(this.getClass()); + private final Properties properties; + + @Autowired + public HealthController(Properties properties) { + this.properties = properties; + } @RequestMapping(value = {"", "/health_check"}, method = RequestMethod.GET) public String hello() { log.debug("Hello from Login service!"); return "Hello from Login service!"; } + + @PreAuthorize("hasAnyAuthority('PORTAL_ADMINISTRATOR')") + @RequestMapping(value = "/health_check/advanced", method = RequestMethod.GET) + public Map checkEverything() { + Map response = new HashMap<>(); + response.put("authentication.domain", properties.getDomain()); + response.put("authentication.redis.host", properties.getRedis().getHost()); + 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.redirect", properties.getRedirect()); + return response; + } } diff --git a/src/main/java/eu/dnetlib/loginservice/controllers/UserController.java b/src/main/java/eu/dnetlib/loginservice/controllers/UserController.java index 3ada99c..936e02e 100644 --- a/src/main/java/eu/dnetlib/loginservice/controllers/UserController.java +++ b/src/main/java/eu/dnetlib/loginservice/controllers/UserController.java @@ -1,22 +1,25 @@ package eu.dnetlib.loginservice.controllers; import eu.dnetlib.loginservice.entities.User; -import eu.dnetlib.loginservice.exception.ResourceNotFoundException; -import org.mitre.openid.connect.model.OIDCAuthenticationToken; +import eu.dnetlib.loginservice.services.UserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { + + private final UserInfoService userInfoService; + + @Autowired + public UserController(UserInfoService userInfoService) { + this.userInfoService = userInfoService; + } @RequestMapping(value = "/userInfo", method = RequestMethod.GET) - public ResponseEntity getUserInfo(Authentication authentication) { - if(authentication instanceof OIDCAuthenticationToken) { - return ResponseEntity.ok(new User((OIDCAuthenticationToken) authentication)); - } - throw new ResourceNotFoundException("No Session has been found"); + public ResponseEntity getUserInfo() { + return ResponseEntity.ok(userInfoService.getUserInfo()); } } diff --git a/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Primitives.java b/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Primitives.java index b1f82bf..197dd10 100644 --- a/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Primitives.java +++ b/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Primitives.java @@ -4,7 +4,6 @@ import eu.dnetlib.loginservice.properties.Properties; import eu.dnetlib.loginservice.security.oidc.OpenAIREAuthoritiesMapper; import eu.dnetlib.loginservice.utils.EntryPoint; import eu.dnetlib.loginservice.utils.ScopeReader; -import org.mitre.openid.connect.client.OIDCAuthenticationFilter; import org.mitre.openid.connect.client.OIDCAuthenticationProvider; import org.mitre.openid.connect.client.service.impl.PlainAuthRequestUrlBuilder; import org.mitre.openid.connect.client.service.impl.StaticAuthRequestOptionsService; @@ -13,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler; -import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint; @Configuration public class Primitives { diff --git a/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Services.java b/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Services.java index ab48d75..fe3d541 100644 --- a/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Services.java +++ b/src/main/java/eu/dnetlib/loginservice/security/initiliazers/Services.java @@ -1,7 +1,6 @@ package eu.dnetlib.loginservice.security.initiliazers; import eu.dnetlib.loginservice.properties.Properties; -import eu.dnetlib.loginservice.utils.ScopeReader; import org.mitre.oauth2.model.RegisteredClient; import org.mitre.openid.connect.client.service.impl.StaticClientConfigurationService; import org.mitre.openid.connect.client.service.impl.StaticServerConfigurationService; diff --git a/src/main/java/eu/dnetlib/loginservice/services/UserInfoService.java b/src/main/java/eu/dnetlib/loginservice/services/UserInfoService.java new file mode 100644 index 0000000..d3f93cc --- /dev/null +++ b/src/main/java/eu/dnetlib/loginservice/services/UserInfoService.java @@ -0,0 +1,20 @@ +package eu.dnetlib.loginservice.services; + +import eu.dnetlib.loginservice.entities.User; +import eu.dnetlib.loginservice.exception.ResourceNotFoundException; +import org.mitre.openid.connect.model.OIDCAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +@Service +public class UserInfoService { + + public User getUserInfo() throws ResourceNotFoundException { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if(authentication instanceof OIDCAuthenticationToken) { + return new User((OIDCAuthenticationToken) authentication); + } + throw new ResourceNotFoundException("No Session has been found"); + } +}