diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java index 32d8e52217..c8a8c7c728 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java @@ -85,6 +85,7 @@ public class Oauth2Filter implements Filter { ) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; + String capturedUsername = "(unknown)"; String authHeader = request.getHeader("Authorization"); if (authHeader != null) { @@ -103,6 +104,9 @@ public class Oauth2Filter implements Filter { String username = split[0]; String password = split[1]; String accessToken = null; + if (username.length() > 0) { + capturedUsername = username; + } try { accessToken = new PasswordTokenRequest( Instance.httpTransport, @@ -120,7 +124,7 @@ public class Oauth2Filter implements Filter { ) ).execute().getAccessToken(); } catch (TokenResponseException e) { - unauthorized(projectName, response); + unauthorized(projectName, capturedUsername, e.getStatusCode(), request, response); return; } final Credential cred = new Credential.Builder( @@ -135,7 +139,7 @@ public class Oauth2Filter implements Filter { servletResponse ); } else { - unauthorized(projectName, response); + unauthorized(projectName, capturedUsername, 0, request, response); } } catch (UnsupportedEncodingException e) { throw new Error("Couldn't retrieve authentication", e); @@ -143,7 +147,7 @@ public class Oauth2Filter implements Filter { } } } else { - unauthorized(projectName, response); + unauthorized(projectName, capturedUsername, 0, request, response); } } @@ -152,10 +156,19 @@ public class Oauth2Filter implements Filter { private void unauthorized( String projectName, - ServletResponse servletResponse + String userName, + int statusCode, + HttpServletRequest servletRequest, + HttpServletResponse servletResponse ) throws IOException { - Log.info("[{}] Unauthorized", projectName); - HttpServletResponse response = (HttpServletResponse) servletResponse; + Log.info( + "[{}] Unauthorized, User '{}' status={} ip={}", + projectName, + userName, + statusCode, + servletRequest.getRemoteAddr() + ); + HttpServletResponse response = servletResponse; response.setContentType("text/plain"); response.setHeader("WWW-Authenticate", "Basic realm=\"Git Bridge\""); response.setStatus(401);