Skip to content

Commit b257d83

Browse files
committed
Redirect to /auth-error when OpenID auth fails to prevent redirect loop
1 parent 4807f5c commit b257d83

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121
package eu.openanalytics.containerproxy.auth.impl;
2222

23+
import java.io.IOException;
2324
import java.util.ArrayList;
2425
import java.util.Collections;
2526
import java.util.HashSet;
@@ -28,6 +29,9 @@
2829
import java.util.stream.Collectors;
2930

3031
import javax.inject.Inject;
32+
import javax.servlet.ServletException;
33+
import javax.servlet.http.HttpServletRequest;
34+
import javax.servlet.http.HttpServletResponse;
3135

3236
import org.apache.logging.log4j.LogManager;
3337
import org.apache.logging.log4j.Logger;
@@ -36,6 +40,7 @@
3640
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
3741
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer.AuthorizedUrl;
3842
import org.springframework.security.core.Authentication;
43+
import org.springframework.security.core.AuthenticationException;
3944
import org.springframework.security.core.GrantedAuthority;
4045
import org.springframework.security.core.authority.SimpleGrantedAuthority;
4146
import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
@@ -56,6 +61,7 @@
5661
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
5762
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
5863
import org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority;
64+
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
5965

6066
import eu.openanalytics.containerproxy.auth.IAuthenticationBackend;
6167
import eu.openanalytics.containerproxy.security.FixedDefaultOAuth2AuthorizationRequestResolver;
@@ -103,6 +109,18 @@ public void configureHttpSecurity(HttpSecurity http, AuthorizedUrl anyRequestCon
103109
.authorizationEndpoint()
104110
.authorizationRequestResolver(new FixedDefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepo, OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI))
105111
.and()
112+
.failureHandler(new AuthenticationFailureHandler() {
113+
114+
@Override
115+
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
116+
AuthenticationException exception) throws IOException, ServletException {
117+
118+
exception.printStackTrace();
119+
response.sendRedirect("/auth-error");
120+
121+
}
122+
123+
})
106124
.userInfoEndpoint()
107125
.userAuthoritiesMapper(createAuthoritiesMapper())
108126
.oidcUserService(createOidcUserService());

0 commit comments

Comments
 (0)