From b68408b07d890445e69c16b9b640ac3173aec842 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Wed, 31 May 2023 16:00:04 -0700 Subject: [PATCH] SHIBUI-2578/2579 Slight change to handling the auth event --- .../CoreShibUiConfiguration.java | 25 +++++++++++++++++++ .../configuration/auto/WebSecurityConfig.java | 20 --------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java index 051f29cf0..88607722e 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/CoreShibUiConfiguration.java @@ -56,6 +56,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -63,6 +64,10 @@ import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.core.io.Resource; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.security.authentication.AuthenticationEventPublisher; +import org.springframework.security.authentication.DefaultAuthenticationEventPublisher; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; @@ -293,4 +298,24 @@ public List beaconEndpointUrl(@Value("${shibui.beacon.url}") String urls) t } return result; } + + @Bean + public AuthenticationEventPublisher authenticationEventPublisher(ApplicationEventPublisher applicationEventPublisher, UserService userService) { + return new RecordLoginHandler(applicationEventPublisher, userService); + } + + class RecordLoginHandler extends DefaultAuthenticationEventPublisher { + private UserService userService; + + public RecordLoginHandler(ApplicationEventPublisher applicationEventPublisher, UserService userService) { + super(applicationEventPublisher); + this.userService = userService; + } + + @Override + public void publishAuthenticationSuccess(Authentication authentication) { + super.publishAuthenticationSuccess(authentication); + userService.updateLoginRecord(authentication.getName()); + } + } } \ No newline at end of file diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java index 1bcc57f49..2b44f5b01 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java @@ -135,7 +135,6 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception { .roles("ADMIN"); } auth.userDetailsService(adminUserService(userService)).passwordEncoder(passwordEncoder); - auth.authenticationEventPublisher(new RecordLoginHandler(userService)); } @Override @@ -169,23 +168,4 @@ public void configure(WebSecurity web) throws Exception { } }; } - - class RecordLoginHandler implements AuthenticationEventPublisher { - private UserService userService; - - public RecordLoginHandler(UserService userService) { - this.userService = userService; - } - - @Override - public void publishAuthenticationSuccess(Authentication authentication) { - // do this in SimpleAuthenticationProvider in v2.0 - userService.updateLoginRecord(authentication.getName()); - } - - @Override - public void publishAuthenticationFailure(AuthenticationException exception, Authentication authentication) { - // don't care about this - } - } } \ No newline at end of file