private static void spoolAndAudit(Path dir, AuditLogger log, Event event, KeycloakSession keycloakSession) throws IOException { Path file = event.getSessionId() != null && !Files.exists(dir.resolve(event.getSessionId())) ? Files.createFile(dir.resolve(event.getSessionId())) : Files.createTempFile(dir, event.getIpAddress() + "-" + event.getUserId(), null); try (SpoolFileWriter writer = new SpoolFileWriter( Files.newBufferedWriter(file, StandardCharsets.UTF_8, StandardOpenOption.APPEND))) { writer.writeLine(new AuthInfo(event, keycloakSession)); } sendAuditMessage(file, event, log, keycloakSession); }
private static void spoolAndAudit(Path dir, AuditLogger log, Event event, KeycloakSession keycloakSession) throws IOException { Path file = event.getSessionId() != null && !Files.exists(dir.resolve(event.getSessionId())) ? Files.createFile(dir.resolve(event.getSessionId())) : Files.createTempFile(dir, event.getIpAddress() + "-" + event.getUserId(), null); try (SpoolFileWriter writer = new SpoolFileWriter( Files.newBufferedWriter(file, StandardCharsets.UTF_8, StandardOpenOption.APPEND))) { writer.writeLine(new AuthInfo(event, keycloakSession)); } sendAuditMessage(file, event, log, keycloakSession); }
static void spoolAuditMsg(Event event, AuditLogger log, KeycloakSession keycloakSession) { String dataDir = System.getProperty(JBOSS_SERVER_DATA_DIR); Path dir = Paths.get(dataDir, "audit-auth-spool", log.getCommonName().replaceAll(" ", "_")); try { if (!Files.exists(dir)) Files.createDirectories(dir); if (isLogout(event) && Files.exists(dir.resolve(event.getSessionId()))) { sendAuditMessage(dir.resolve(event.getSessionId()), event, log, keycloakSession); return; } spoolAndAudit(dir, log, event, keycloakSession); } catch (Exception e) { LOG.warn("Failed to spool and audit user auth event {}: {}", event.getType().name(), e); } }
static void spoolAuditMsg(Event event, AuditLogger log, KeycloakSession keycloakSession) { String dataDir = System.getProperty(JBOSS_SERVER_DATA_DIR); Path dir = Paths.get(dataDir, "audit-auth-spool", log.getCommonName().replaceAll(" ", "_")); try { if (!Files.exists(dir)) Files.createDirectories(dir); if (isLogout(event) && Files.exists(dir.resolve(event.getSessionId()))) { sendAuditMessage(dir.resolve(event.getSessionId()), event, log, keycloakSession); return; } spoolAndAudit(dir, log, event, keycloakSession); } catch (Exception e) { LOG.warn("Failed to spool and audit user auth event {}: {}", event.getType().name(), e); } }
static DBObject convertEvent(Event event) { BasicDBObject e = new BasicDBObject(); e.put("time", event.getTime()); e.put("type", event.getType().toString()); e.put("realmId", event.getRealmId()); e.put("clientId", event.getClientId()); e.put("userId", event.getUserId()); e.put("sessionId", event.getSessionId()); e.put("ipAddress", event.getIpAddress()); e.put("error", event.getError()); BasicDBObject details = new BasicDBObject(); if (event.getDetails() != null) { for (Map.Entry<String, String> entry : event.getDetails().entrySet()) { details.put(entry.getKey(), entry.getValue()); } } e.put("details", details); return e; }
static EventEntity convertEvent(Event event) { EventEntity eventEntity = new EventEntity(); eventEntity.setId(UUID.randomUUID().toString()); eventEntity.setTime(event.getTime()); eventEntity.setType(event.getType().toString()); eventEntity.setRealmId(event.getRealmId()); eventEntity.setClientId(event.getClientId()); eventEntity.setUserId(event.getUserId()); eventEntity.setSessionId(event.getSessionId()); eventEntity.setIpAddress(event.getIpAddress()); eventEntity.setError(event.getError()); try { eventEntity.setDetailsJson(mapper.writeValueAsString(event.getDetails())); } catch (IOException ex) { logger.error("Failed to write log details", ex); } return eventEntity; }
static EventEntity convertEvent(Event event) { EventEntity eventEntity = new EventEntity(); eventEntity.setId(UUID.randomUUID().toString()); eventEntity.setTime(event.getTime()); eventEntity.setType(event.getType().toString()); eventEntity.setRealmId(event.getRealmId()); eventEntity.setClientId(event.getClientId()); eventEntity.setUserId(event.getUserId()); eventEntity.setSessionId(event.getSessionId()); eventEntity.setIpAddress(event.getIpAddress()); eventEntity.setError(event.getError()); try { eventEntity.setDetailsJson(mapper.writeValueAsString(event.getDetails())); } catch (IOException ex) { logger.error("Failed to write log details", ex); } return eventEntity; }