Skip to content

Commit 4efe3c1

Browse files
committed
Fix #25862: SpEL in openid.logout-url: fix context-path
1 parent 7dd3ff4 commit 4efe3c1

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/auth/impl/OpenIDAuthenticationBackend.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
4444
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
4545
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService;
46+
import org.springframework.security.oauth2.client.oidc.web.logout.OidcClientInitiatedLogoutSuccessHandler;
4647
import org.springframework.security.oauth2.client.registration.ClientRegistration;
4748
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
4849
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
@@ -57,6 +58,7 @@
5758
import org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority;
5859
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
5960
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
61+
import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler;
6062
import org.springframework.web.context.request.RequestContextHolder;
6163
import org.springframework.web.context.request.ServletRequestAttributes;
6264
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
@@ -159,9 +161,13 @@ public void customizeContainerEnv(Map<String, String> env) {
159161

160162
@Override
161163
public LogoutSuccessHandler getLogoutSuccessHandler() {
162-
return (request, response, authentication) -> {
164+
return (httpServletRequest, httpServletResponse, authentication) -> {
163165
SpecExpressionContext context = SpecExpressionContext.create(authentication.getPrincipal(), authentication.getCredentials());
164-
response.sendRedirect(specExpressionResolver.evaluateToString(getLogoutSuccessURL(), context));
166+
String resolvedLogoutUrl = specExpressionResolver.evaluateToString(getLogoutSuccessURL(), context);
167+
168+
SimpleUrlLogoutSuccessHandler delegate = new SimpleUrlLogoutSuccessHandler();
169+
delegate.setDefaultTargetUrl(resolvedLogoutUrl);
170+
delegate.onLogoutSuccess(httpServletRequest, httpServletResponse, authentication);
165171
};
166172
}
167173

src/main/java/eu/openanalytics/containerproxy/security/WebSecurityConfig.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,8 @@
3838
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
3939
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
4040
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
41-
import org.springframework.security.core.Authentication;
4241
import org.springframework.security.web.access.AccessDeniedHandler;
4342
import org.springframework.security.web.access.AccessDeniedHandlerImpl;
44-
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
45-
import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler;
4643
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
4744
import org.springframework.security.web.csrf.MissingCsrfTokenException;
4845
import org.springframework.security.web.header.writers.StaticHeadersWriter;

0 commit comments

Comments
 (0)