@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String requestLine = request.getMethod() + " " + request.getRequestURI() + " " + request.getProtocol(); AuditLogEntry logEntry = new AuditLogEntry(requestLine, request.getRemoteUser(), InetAddress.getByName(request.getRemoteAddr()).getHostAddress(), Collections.<String, String>emptyMap()); logEntry.setResponse(response.getStatus(), ((Response) response).getContentCount()); logger.trace(logEntry.toString()); } }
private void auditLogIfNeeded(HttpRequest request, HttpResponse response, Channel channel) { if (!auditLogEnabled) { return; } AuditLogEntry logEntry = new AuditLogEntry(request, Networks.getIP(channel.remoteAddress())); logEntry.setResponse(response); AUDIT_LOGGER.trace(logEntry.toString()); }
private AuditLogEntry getLogEntry(ChannelHandlerContext ctx) { Object entryObject = ctx.getAttachment(); AuditLogEntry logEntry; if (entryObject != null && entryObject instanceof AuditLogEntry) { logEntry = (AuditLogEntry) entryObject; } else { logEntry = new AuditLogEntry(); ctx.setAttachment(logEntry); } return logEntry; }
private void createLogEntry(HttpRequest httpRequest, HttpResponseStatus responseStatus) throws UnknownHostException { InetAddress clientAddr = InetAddress.getByName(Objects.firstNonNull(SecurityRequestContext.getUserIP(), "0.0.0.0")); AuditLogEntry logEntry = new AuditLogEntry(httpRequest, clientAddr.getHostAddress()); logEntry.setUserName(authenticationContext.getPrincipal().getName()); logEntry.setResponse(responseStatus.code(), 0L); AUDIT_LOG.trace(logEntry.toString()); } }
private void createLogEntry(HttpRequest httpRequest, HttpResponseStatus responseStatus) throws UnknownHostException { InetAddress clientAddr = InetAddress.getByName(Objects.firstNonNull(SecurityRequestContext.getUserIP(), "0.0.0.0")); AuditLogEntry logEntry = new AuditLogEntry(httpRequest, clientAddr.getHostAddress()); logEntry.setUserName(authenticationContext.getPrincipal().getName()); logEntry.setResponse(responseStatus.code(), 0L); AUDIT_LOG.trace(logEntry.toString()); } }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { // When a request is forwarded to the internal CDAP service if (msg instanceof HttpRequest) { HttpRequest request = (HttpRequest) msg; // Extra configurations for audit log AuditLogConfig logConfig = AUDIT_LOG_LOOKUP_METHOD.contains(request.method()) ? RouterAuditLookUp.getInstance().getAuditLogContent(request.uri(), request.method()) : null; if (logConfig == null) { logEntry = new AuditLogEntry(request, Networks.getIP(ctx.channel().remoteAddress())); } else { logEntry = new AuditLogEntry(request, Networks.getIP(ctx.channel().remoteAddress()), logConfig.getHeaderNames()); logRequestBody = logConfig.isLogRequestBody(); logResponseBody = logConfig.isLogResponseBody(); } } else if (msg instanceof HttpContent && logEntry != null) { ByteBuf content = ((HttpContent) msg).content(); if (logRequestBody && content.isReadable()) { logEntry.appendRequestBody(content.toString(StandardCharsets.UTF_8)); } } ctx.fireChannelRead(msg); }
@Override public void messageReceived(ChannelHandlerContext ctx, final MessageEvent event) throws Exception { Object msg = event.getMessage(); if (!(msg instanceof HttpRequest)) { super.messageReceived(ctx, event); } else { AuditLogEntry logEntry = new AuditLogEntry(); ctx.setAttachment(logEntry); if (validateSecuredInterception(ctx, (HttpRequest) msg, event.getChannel(), logEntry)) { Channels.fireMessageReceived(ctx, msg, event.getRemoteAddress()); } // else we write the response directly for authentication failure, so nothing to do } }