From 880100b9d6424d0ddec056c1c5f02d1c986120ec Mon Sep 17 00:00:00 2001 From: Jj! Date: Wed, 13 Feb 2019 13:02:21 -0600 Subject: [PATCH] [SHIBUI-1226] initial auditor aware for pac4j extra configuration for debugging in database rename field for mariadb compatibility --- .../admin/ui/domain/resolvers/RegexScheme.java | 2 ++ .../JPAEntityDescriptorServiceImpl.java | 2 ++ .../unicon/shibui/pac4j/Pac4jAuditorAware.java | 18 ++++++++++++++++++ .../net/unicon/shibui/pac4j/WebSecurity.java | 6 ++++++ .../src/test/docker/conf/application.yml | 10 ++++++++++ .../src/test/docker/docker-compose.yml | 15 ++++++++++++++- 6 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 pac4j-module/src/main/java/net/unicon/shibui/pac4j/Pac4jAuditorAware.java diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java index bb175432c..a8d4fffaa 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java @@ -4,6 +4,7 @@ import lombok.Getter; import lombok.Setter; +import javax.persistence.Column; import javax.persistence.Entity; import javax.validation.constraints.NotNull; @@ -21,5 +22,6 @@ public RegexScheme() { } @NotNull + @Column(name = "match_regex") private String match; } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java index 6bf5ac294..214f4a083 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java @@ -94,12 +94,14 @@ public JPAEntityDescriptorServiceImpl(OpenSamlObjects openSamlObjects, EntitySer public EntityDescriptor createDescriptorFromRepresentation(final EntityDescriptorRepresentation representation) { EntityDescriptor ed = openSamlObjects.buildDefaultInstanceOfType(EntityDescriptor.class); ed.setEntityID(representation.getEntityId()); + /* User user = userService.getCurrentUser(); if (user != null) { ed.setCreatedBy(user.getUsername()); } else { LOGGER.warn("Current user was null! Who is logged in?"); } + */ // setup SPSSODescriptor if (representation.getServiceProviderSsoDescriptor() != null) { diff --git a/pac4j-module/src/main/java/net/unicon/shibui/pac4j/Pac4jAuditorAware.java b/pac4j-module/src/main/java/net/unicon/shibui/pac4j/Pac4jAuditorAware.java new file mode 100644 index 000000000..0fe287c7e --- /dev/null +++ b/pac4j-module/src/main/java/net/unicon/shibui/pac4j/Pac4jAuditorAware.java @@ -0,0 +1,18 @@ +package net.unicon.shibui.pac4j; + +import org.springframework.data.domain.AuditorAware; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import java.util.Optional; + +public class Pac4jAuditorAware implements AuditorAware { + @Override + public Optional getCurrentAuditor() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication == null) { + return Optional.empty(); + } + return Optional.of(authentication.getName()); + } +} diff --git a/pac4j-module/src/main/java/net/unicon/shibui/pac4j/WebSecurity.java b/pac4j-module/src/main/java/net/unicon/shibui/pac4j/WebSecurity.java index 120a45f36..6e08444a9 100644 --- a/pac4j-module/src/main/java/net/unicon/shibui/pac4j/WebSecurity.java +++ b/pac4j-module/src/main/java/net/unicon/shibui/pac4j/WebSecurity.java @@ -10,6 +10,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; +import org.springframework.data.domain.AuditorAware; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; @@ -93,4 +94,9 @@ public void configure(org.springframework.security.config.annotation.web.builder web.httpFirewall(firewall); } } + + @Bean + public AuditorAware defaultAuditorAware() { + return new Pac4jAuditorAware(); + } } diff --git a/pac4j-module/src/test/docker/conf/application.yml b/pac4j-module/src/test/docker/conf/application.yml index e5986c1c1..90ddce36a 100644 --- a/pac4j-module/src/test/docker/conf/application.yml +++ b/pac4j-module/src/test/docker/conf/application.yml @@ -1,6 +1,16 @@ spring: profiles: include: + datasource: + platform: mariadb + driver-class-name: org.mariadb.jdbc.Driver + url: jdbc:mariadb://db:3306/shibui + username: shibui + password: shibui + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.MariaDBDialect server: port: 8443 ssl: diff --git a/pac4j-module/src/test/docker/docker-compose.yml b/pac4j-module/src/test/docker/docker-compose.yml index ac3a781c2..f76e1b375 100644 --- a/pac4j-module/src/test/docker/docker-compose.yml +++ b/pac4j-module/src/test/docker/docker-compose.yml @@ -1,6 +1,18 @@ version: "3.7" services: + db: + image: mariadb + container_name: db + environment: + MYSQL_USER: shibui + MYSQL_PASSWORD: shibui + MYSQL_DATABASE: shibui + MYSQL_RANDOM_ROOT_PASSWORD: "yes" + networks: + - front + ports: + - 3306:3306 shibui: image: unicon/shibui-pac4j entrypoint: ["/usr/bin/java", "-Dspring.profiles.active=dev", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-jar", "app.jar"] @@ -13,7 +25,8 @@ services: - ./conf/application.yml:/application.yml networks: - front - + depends_on: + - db mailhog: image: mailhog/mailhog:latest ports: