Add logging for authentication filters
Closes gh-159
This commit is contained in:
committed by
Joe Grandja
parent
2c4bd29f98
commit
74fe63a65b
@@ -22,6 +22,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
@@ -137,12 +138,18 @@ public final class OidcClientRegistrationEndpointFilter extends OncePerRequestFi
|
|||||||
|
|
||||||
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, clientRegistrationAuthenticationResult);
|
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, clientRegistrationAuthenticationResult);
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("Client registration request failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
OAuth2Error error = new OAuth2Error(
|
OAuth2Error error = new OAuth2Error(
|
||||||
OAuth2ErrorCodes.INVALID_REQUEST,
|
OAuth2ErrorCodes.INVALID_REQUEST,
|
||||||
"OpenID Connect 1.0 Client Registration Error: " + ex.getMessage(),
|
"OpenID Connect 1.0 Client Registration Error: " + ex.getMessage(),
|
||||||
"https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError");
|
"https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError");
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(error.getDescription(), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response,
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response,
|
||||||
new OAuth2AuthenticationException(error));
|
new OAuth2AuthenticationException(error));
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
@@ -116,12 +117,18 @@ public final class OidcUserInfoEndpointFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, userInfoAuthenticationResult);
|
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, userInfoAuthenticationResult);
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("User info request failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
OAuth2Error error = new OAuth2Error(
|
OAuth2Error error = new OAuth2Error(
|
||||||
OAuth2ErrorCodes.INVALID_REQUEST,
|
OAuth2ErrorCodes.INVALID_REQUEST,
|
||||||
"OpenID Connect 1.0 UserInfo Error: " + ex.getMessage(),
|
"OpenID Connect 1.0 UserInfo Error: " + ex.getMessage(),
|
||||||
"https://openid.net/specs/openid-connect-core-1_0.html#UserInfoError");
|
"https://openid.net/specs/openid-connect-core-1_0.html#UserInfoError");
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(error.getDescription(), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response,
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response,
|
||||||
new OAuth2AuthenticationException(error));
|
new OAuth2AuthenticationException(error));
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
@@ -173,6 +174,9 @@ public final class OAuth2AuthorizationEndpointFilter extends OncePerRequestFilte
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (authenticationResult instanceof OAuth2AuthorizationConsentAuthenticationToken) {
|
if (authenticationResult instanceof OAuth2AuthorizationConsentAuthenticationToken) {
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace("Authorization consent is required");
|
||||||
|
}
|
||||||
sendAuthorizationConsent(request, response,
|
sendAuthorizationConsent(request, response,
|
||||||
(OAuth2AuthorizationCodeRequestAuthenticationToken) authentication,
|
(OAuth2AuthorizationCodeRequestAuthenticationToken) authentication,
|
||||||
(OAuth2AuthorizationConsentAuthenticationToken) authenticationResult);
|
(OAuth2AuthorizationConsentAuthenticationToken) authenticationResult);
|
||||||
@@ -183,6 +187,9 @@ public final class OAuth2AuthorizationEndpointFilter extends OncePerRequestFilte
|
|||||||
request, response, authenticationResult);
|
request, response, authenticationResult);
|
||||||
|
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("Authorization request failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,6 +267,9 @@ public final class OAuth2AuthorizationEndpointFilter extends OncePerRequestFilte
|
|||||||
.toUriString();
|
.toUriString();
|
||||||
this.redirectStrategy.sendRedirect(request, response, redirectUri);
|
this.redirectStrategy.sendRedirect(request, response, redirectUri);
|
||||||
} else {
|
} else {
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace("Displaying generated consent screen");
|
||||||
|
}
|
||||||
DefaultConsentPage.displayConsent(request, response, clientId, principal, requestedScopes, authorizedScopes, state);
|
DefaultConsentPage.displayConsent(request, response, clientId, principal, requestedScopes, authorizedScopes, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -316,6 +326,10 @@ public final class OAuth2AuthorizationEndpointFilter extends OncePerRequestFilte
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace("Redirecting to client with error");
|
||||||
|
}
|
||||||
|
|
||||||
UriComponentsBuilder uriBuilder = UriComponentsBuilder
|
UriComponentsBuilder uriBuilder = UriComponentsBuilder
|
||||||
.fromUriString(authorizationCodeRequestAuthentication.getRedirectUri())
|
.fromUriString(authorizationCodeRequestAuthentication.getRedirectUri())
|
||||||
.queryParam(OAuth2ParameterNames.ERROR, error.getErrorCode());
|
.queryParam(OAuth2ParameterNames.ERROR, error.getErrorCode());
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
import org.springframework.http.server.ServletServerHttpResponse;
|
import org.springframework.http.server.ServletServerHttpResponse;
|
||||||
@@ -123,6 +124,9 @@ public final class OAuth2ClientAuthenticationFilter extends OncePerRequestFilter
|
|||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
|
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("Client authentication failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,6 +170,10 @@ public final class OAuth2ClientAuthenticationFilter extends OncePerRequestFilter
|
|||||||
SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
|
SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
|
||||||
securityContext.setAuthentication(authentication);
|
securityContext.setAuthentication(authentication);
|
||||||
SecurityContextHolder.setContext(securityContext);
|
SecurityContextHolder.setContext(securityContext);
|
||||||
|
if (this.logger.isDebugEnabled()) {
|
||||||
|
this.logger.debug(LogMessage.format("Set SecurityContextHolder authentication to %s",
|
||||||
|
authentication.getClass().getSimpleName()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
|
private void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
@@ -167,6 +168,9 @@ public final class OAuth2TokenEndpointFilter extends OncePerRequestFilter {
|
|||||||
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, accessTokenAuthentication);
|
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, accessTokenAuthentication);
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
SecurityContextHolder.clearContext();
|
SecurityContextHolder.clearContext();
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("Token request failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
@@ -113,6 +114,9 @@ public final class OAuth2TokenIntrospectionEndpointFilter extends OncePerRequest
|
|||||||
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, tokenIntrospectionAuthenticationResult);
|
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, tokenIntrospectionAuthenticationResult);
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
SecurityContextHolder.clearContext();
|
SecurityContextHolder.clearContext();
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("Token introspection request failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.springframework.core.log.LogMessage;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
@@ -110,6 +111,9 @@ public final class OAuth2TokenRevocationEndpointFilter extends OncePerRequestFil
|
|||||||
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, tokenRevocationAuthenticationResult);
|
this.authenticationSuccessHandler.onAuthenticationSuccess(request, response, tokenRevocationAuthenticationResult);
|
||||||
} catch (OAuth2AuthenticationException ex) {
|
} catch (OAuth2AuthenticationException ex) {
|
||||||
SecurityContextHolder.clearContext();
|
SecurityContextHolder.clearContext();
|
||||||
|
if (this.logger.isTraceEnabled()) {
|
||||||
|
this.logger.trace(LogMessage.format("Token revocation request failed: %s", ex.getError()), ex);
|
||||||
|
}
|
||||||
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
this.authenticationFailureHandler.onAuthenticationFailure(request, response, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user