mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Fabio Pistolesi
13.43.2016 d71ce1d1a62be7713cbee92b9c99574eb69d1bb5
OPENDJ-3394 Deliver example configuration files for CAUD handlers.

Also includes examples for ELK and JDBC setup
1 files modified
8 files added
1450 ■■■■ changed files
opendj-server-legacy/resource/config/audit-handlers/elasticsearch-config.json-example 36 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/elasticsearch-index-setup-example.json 277 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/jdbc-config.json-example 119 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/jms-config.json-example 41 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/mysql_tables-example.sql 99 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/oracle_tables-example.sql 107 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/splunk-config.json-example 28 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/syslog-config.json-example 29 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/resources/org/opends/server/loggers/audit-config.json 714 ●●●● patch | view | raw | blame | history
opendj-server-legacy/resource/config/audit-handlers/elasticsearch-config.json-example
New file
@@ -0,0 +1,36 @@
//
// Example configuration for Elastic Search handler.
// Edit a copy of the file with your settings.
// Strip comments before use with grep -v '^[ ]*//' < your-file.json
//
{
  "class": "org.forgerock.audit.handlers.elasticsearch.ElasticsearchAuditEventHandler",
  "config": {
    // Buffering is optional. Once enabled, its fields are optional.
    "buffering": {
      "enabled": false,
      "maxBatchedEvents": 500,
      "maxSize": 10000,
      "writeInterval": "100 millis"
    },
    // Optional
    "connection": {
      "host": "localhost",
      "port": 9200,
      "useSSL": false,
      "username": "myUsername",
      "password": "myPassword"
    },
    "enabled": false,
    // Optional
    "indexMapping": {
      "indexName": "audit"
    },
    "name": "elasticsearch",
    "topics": [
      "ldap-access",
      "http-access"
    ]
  }
}
opendj-server-legacy/resource/config/audit-handlers/elasticsearch-index-setup-example.json
New file
@@ -0,0 +1,277 @@
{
  "settings": {},
  "mappings": {
    "ldap-access": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "timestamp": {
          "type": "date"
        },
        "eventName": {
          "type": "string",
          "index": "not_analyzed"
        },
        "transactionId": {
          "type": "string",
          "index": "not_analyzed"
        },
        "userId": {
          "type": "string",
          "index": "not_analyzed"
        },
        "server": {
          "properties": {
            "ip": {
              "type": "string",
              "index": "not_analyzed"
            },
            "port": {
              "type": "integer"
            }
          }
        },
        "client": {
          "properties": {
            "ip": {
              "type": "string",
              "index": "not_analyzed"
            },
            "port": {
              "type": "integer"
            }
          }
        },
        "request": {
          "properties": {
            "protocol": {
              "type": "string",
              "index": "not_analyzed"
            },
            "operation": {
              "type": "string",
              "index": "not_analyzed"
            },
            "connId": {
              "type": "integer",
              "index": "not_analyzed"
            },
            "msgId": {
              "type": "integer"
            },
            "dn": {
              "type": "string"
            },
            "scope": {
              "type": "string"
            },
            "filter": {
              "type": "string"
            },
            "attrs": {
              "type": "string"
            },
            "authType": {
              "type": "string"
            },
            "controls": {
              "type": "string"
            },
            "attr": {
              "type": "string"
            },
            "idToAbandon": {
              "type": "integer"
            },
            "message": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "newRDN": {
              "type": "string"
            },
            "newSup": {
              "type": "string"
            },
            "deleteOldRDN": {
              "type": "boolean"
            },
            "oid": {
              "type": "string"
            },
            "version": {
              "type": "string"
            },
            "opType": {
              "type": "string"
            }
          }
        },
        "response": {
          "properties": {
            "status": {
              "type": "string",
              "index": "not_analyzed"
            },
            "statusCode": {
              "type": "string",
              "index": "not_analyzed"
            },
            "detail": {
              "type": "string",
              "index": "not_analyzed"
            },
            "elapsedTime": {
              "type": "integer"
            },
            "elapsedTimeUnits": {
              "type": "string",
              "index": "not_analyzed"
            },
            "nentries": {
              "type": "string"
            },
            "controls": {
              "type": "string"
            },
            "additionalItems": {
              "type": "string"
            },
            "failureReason": {
              "type": "string"
            },
            "maskedResult": {
              "type": "integer"
            },
            "maskedMessage": {
              "type": "string"
            },
            "reason": {
              "type": "string"
            }
          }
        }
      }
    },
    "http-access": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "timestamp": {
          "type": "date"
        },
        "eventName": {
          "type": "string",
          "index": "not_analyzed"
        },
        "transactionId": {
          "type": "string",
          "index": "not_analyzed"
        },
        "userId": {
          "type": "string",
          "index": "not_analyzed"
        },
        "server": {
          "properties": {
            "ip": {
              "type": "string",
              "index": "not_analyzed"
            },
            "port": {
              "type": "integer"
            }
          }
        },
        "client": {
          "properties": {
            "ip": {
              "type": "string",
              "index": "not_analyzed"
            },
            "port": {
              "type": "integer"
            }
          }
        },
        "request": {
          "properties": {
            "protocol": {
              "type": "string",
              "index": "not_analyzed"
            },
            "operation": {
              "type": "string",
              "index": "not_analyzed"
            },
            "detail": {
              "type": "nested"
            }
          }
        },
        "http": {
          "properties": {
            "request": {
              "properties": {
                "secure": {
                  "type": "boolean"
                },
                "method": {
                  "type": "string",
                  "index": "not_analyzed"
                },
                "path": {
                  "type": "string",
                  "index": "not_analyzed"
                },
                "queryParameters": {
                  "type": "nested"
                },
                "headers": {
                  "type": "nested"
                },
                "cookies": {
                  "type": "nested"
                }
              }
            },
            "response": {
              "properties": {
                "headers": {
                  "type": "nested"
                }
              }
            }
          }
        },
        "response": {
          "properties": {
            "status": {
              "type": "string",
              "index": "not_analyzed"
            },
            "statusCode": {
              "type": "string",
              "index": "not_analyzed"
            },
            "detail": {
              "type": "string",
              "index": "not_analyzed"
            },
            "elapsedTime": {
              "type": "integer"
            },
            "elapsedTimeUnits": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}
opendj-server-legacy/resource/config/audit-handlers/jdbc-config.json-example
New file
@@ -0,0 +1,119 @@
//
// Example configuration for JDBC handler.
// Edit a copy of the file with your settings.
// Strip comments before use with grep -v '^[ ]*//' < your-file.json
//
{
  "class": "org.forgerock.audit.handlers.jdbc.JdbcAuditEventHandler",
  "config": {
    // buffering is optional; once enabled any other fields are optional
    "buffering": {
      "enabled": false,
      "autoFlush": true,
      "maxSize": 5000,
      "interval": "disabled",
      "writerThreads": 1,
      "maxBatchedEvents": 100
    },
    "connectionPool": {
      // Make sure the class is in your classpath
      "dataSourceClassName": "com.mysql.jdbc.jdbc2.optional.MysqlDataSource",
      // jdbcURL depends on the JDBC driver
      "jdbcUrl": "jdbc:mysql://localhost:3306/audit?allowMultiQueries=true&characterEncoding=utf8",
      "password": "auditAdminPassword",
      "username": "auditAdmin",
      // Following connectionPool fields are optional
      "autoCommit": true,
      "connectionTimeOut": 30000,
      "idleTimeout": 600000,
      "maxLifeTime": 1800000,
      "minIdle": 10,
      "maxPoolSize": 10,
      "poolName": "audit",
      "driverClassName": null
    },
    "databaseType": "mysql",
    "enabled": false,
    "name": "jdbc",
    "tableMappings": [
      {
        "event": "ldap-access",
        "fieldToColumn": {
          "_id": "id",
          "eventName": "eventname",
          "runAs": "runAs",
          "timestamp": "timestamp_",
          "transactionId": "transactionid",
          "userId": "userid",
          "client/host": "client_host",
          "client/ip": "client_ip",
          "client/port": "client_port",
          "server/ip": "server_ip",
          "server/port": "server_port",
          "request/attr": "request_attr",
          "request/attrs": "request_attrs",
          "request/authType": "request_authType",
          "request/connId": "request_connId",
          "request/controls": "request_controls",
          "request/deleteOldRDN": "request_deleteOldRDN",
          "request/dn": "request_dn",
          "request/filter": "request_filter",
          "request/idToAbandon": "request_idToAbandon",
          "request/message": "request_message",
          "request/msgId": "request_msgId",
          "request/name": "request_name",
          "request/newRDN": "request_newRDN",
          "request/newSup": "request_newSup",
          "request/oid": "request_oid",
          "request/opType": "request_opType",
          "request/operation": "request_operation",
          "request/protocol": "request_protocol",
          "request/scope": "request_scope",
          "request/version": "request_version",
          "response/additionalItems": "response_additionalItems",
          "response/controls": "response_controls",
          "response/failureReason": "response_failureReason",
          "response/maskedMessage": "response_maskedMessage",
          "response/maskedResult": "response_maskedResult",
          "response/nentries": "response_nentries",
          "response/reason": "response_reason"
        },
        "table": "ldapaccess"
      },
      {
        "event": "http-access",
        "fieldToColumn": {
          "_id": "id",
          "eventName": "eventname",
          "timestamp": "timestamp_",
          "transactionId": "transactionid",
          "userId": "userid",
          "client/host": "client_host",
          "client/ip": "client_ip",
          "client/port": "client_port",
          "server/ip": "server_ip",
          "server/port": "server_port",
          "http/request/cookies": "request_cookies",
          "http/request/headers": "request_headers",
          "http/request/method": "request_method",
          "http/request/path": "request_path",
          "http/request/queryParameters": "request_queryparameters",
          "http/request/secure": "request_secure",
          "http/response/headers": "response_headers",
          "request/operation": "request_operation",
          "request/protocol": "request_protocol",
          "response/elapsedTime": "response_elapsedtime",
          "response/elapsedTimeUnits": "response_elapsedtimeunits",
          "response/status": "response_status",
          "response/statusCode": "response_statuscode"
        },
        "table": "httpaccess"
      }
    ],
    "topics": [
      "ldap-access",
      "http-access"
    ]
  }
}
opendj-server-legacy/resource/config/audit-handlers/jms-config.json-example
New file
@@ -0,0 +1,41 @@
//
// Example configuration for splunk handler.
// Edit a copy of the file with your settings.
// Strip comments before use with grep -v '^[ ]*//' < your-file.json
//
{
  "class": "org.forgerock.audit.handlers.jms.JmsAuditEventHandler",
  "config": {
    "batch": {
      "batchEnabled": false,
      "capacity": 1,
      "maxBatchedEvents": 1,
      "threadCount": 1,
      "insertTimeoutSec": 60,
      "pollTimeoutSec": 10,
      "shutdownTimeoutSec": 60
    },
    // Permitted values: NON_PERSISTENT, PERSISTENT
    "deliveryMode": "NON_PERSISTENT",
    "enabled": false,
    // Optional
    "topicName": "audit",
    "jndi": {
      // Optional
      "connectionFactoryName": "connectionFactory",
      "contextProperties": {
        "java.naming.factory.initial": "org.apache.activemq.jndi.ActiveMQInitialContextFactory",
        "java.naming.provider.url": "tcp://localhost:61616",
        "topic.audit": "audit"
      }
    },
    "name": "jms",
    // Permitted values: AUTO, CLIENT, DUPS_OK
    "sessionMode": "AUTO",
    "topics": [
      "ldap-access",
      "http-access"
    ]
  }
}
opendj-server-legacy/resource/config/audit-handlers/mysql_tables-example.sql
New file
@@ -0,0 +1,99 @@
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `audit` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;
USE `audit` ;
-- -----------------------------------------------------
-- Table `audit`.`ldapaccess`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `audit`.`ldapaccess` (
  `id` VARCHAR(56) NOT NULL ,
  `timestamp_` VARCHAR(29) NULL COMMENT 'Date format: 2011-09-09T14:58:17.654+02:00' ,
  `transactionid` VARCHAR(255) NULL ,
  `eventname` VARCHAR(255) ,
  `userid` VARCHAR(255) NULL ,
  `server_ip` VARCHAR(40) ,
  `server_port` VARCHAR(5) ,
  `client_host` VARCHAR(255) ,
  `client_ip` VARCHAR(40) ,
  `client_port` VARCHAR(5) ,
  `request_protocol` VARCHAR(255) ,
  `request_operation` VARCHAR(255) ,
  `request_attr` VARCHAR(255) NULL,
  `request_attrs` VARCHAR(255) NULL ,
  `request_authType` VARCHAR(255) NULL ,
  `request_connId` INTEGER ,
  `request_msgId` INTEGER ,
  `request_controls` VARCHAR(255) NULL ,
  `request_deleteOldRDN` BOOLEAN NULL ,
  `request_dn` VARCHAR(255) NULL ,
  `request_filter` VARCHAR(255) NULL ,
  `request_idToAbandon` VARCHAR(255) NULL ,
  `request_message` VARCHAR(255) NULL ,
  `request_name` VARCHAR(255) NULL ,
  `request_newRDN` VARCHAR(255) NULL ,
  `request_newSup` VARCHAR(255) NULL ,
  `request_oid` VARCHAR(255) NULL ,
  `request_opType` VARCHAR(255) NULL ,
  `request_operation` VARCHAR(255) NULL ,
  `request_protocol` VARCHAR(255) NULL ,
  `request_scope` VARCHAR(255) NULL ,
  `request_version` VARCHAR(255) NULL ,
  `response_additionalItems` VARCHAR(255) NULL ,
  `response_controls` VARCHAR(255) NULL ,
  `response_failureReason` VARCHAR(255) NULL ,
  `response_maskedMessage` VARCHAR(255) NULL ,
  `response_maskedResult` VARCHAR(255) NULL ,
  `response_nentries` INTEGER NULL ,
  `response_reason` VARCHAR(255) NULL ,
  `response_status` VARCHAR(10) NULL ,
  `response_statuscode` VARCHAR(255) NULL ,
  `response_elapsedtime` VARCHAR(255) NULL ,
  `response_elapsedtimeunits` VARCHAR(255) NULL ,
  PRIMARY KEY (`id`),
  INDEX `idx_ldapaccess_dn` (`request_dn` ASC),
  INDEX `idx_ldapaccess_userid` (`userid` ASC) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `audit`.`httpaccess`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `audit`.`httpaccess` (
  `id` VARCHAR(56) NOT NULL ,
  `timestamp_` VARCHAR(29) NULL COMMENT 'Date format: 2011-09-09T14:58:17.654+02:00' ,
  `transactionid` VARCHAR(255) NULL ,
  `eventname` VARCHAR(255) ,
  `userid` VARCHAR(255) NULL ,
  `server_ip` VARCHAR(40) ,
  `server_port` VARCHAR(5) ,
  `client_host` VARCHAR(255) ,
  `client_ip` VARCHAR(40) ,
  `client_port` VARCHAR(5) ,
  `request_protocol` VARCHAR(255) NULL ,
  `request_operation` VARCHAR(255) NULL ,
  `request_secure` BOOLEAN NULL ,
  `request_method` VARCHAR(7) NULL ,
  `request_path` VARCHAR(255) NULL ,
  `request_queryparameters` MEDIUMTEXT NULL ,
  `request_headers` MEDIUMTEXT NULL ,
  `request_cookies` MEDIUMTEXT NULL ,
  `response_headers` MEDIUMTEXT NULL ,
  `response_status` VARCHAR(10) NULL ,
  `response_statuscode` VARCHAR(255) NULL ,
  `response_elapsedtime` VARCHAR(255) NULL ,
  `response_elapsedtimeunits` VARCHAR(255) NULL ,
  PRIMARY KEY (`id`),
  INDEX `idx_httpaccess_userid` (`userid` ASC) )
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-- -------------------------------------------
-- audit database user
-- ------------------------------------------
GRANT ALL PRIVILEGES on audit.* TO audit IDENTIFIED BY 'audit';
GRANT ALL PRIVILEGES on audit.* TO audit@'%' IDENTIFIED BY 'audit';
GRANT ALL PRIVILEGES on audit.* TO audit@localhost IDENTIFIED BY 'audit';
opendj-server-legacy/resource/config/audit-handlers/oracle_tables-example.sql
New file
@@ -0,0 +1,107 @@
-- -----------------------------------------------------
-- Table auditaccess
-- -----------------------------------------------------
PROMPT Creating Table httpaccess ...
CREATE TABLE httpaccess (
  id VARCHAR2(56 CHAR) NOT NULL,
  timestamp_ VARCHAR2(29 CHAR) NOT NULL,
  transactionid VARCHAR2(255 CHAR) NOT NULL,
  eventname VARCHAR2(255 CHAR),
  userid VARCHAR2(255 CHAR),
  server_ip VARCHAR2(40 CHAR),
  server_port VARCHAR2(5 CHAR),
  client_host VARCHAR2(255 CHAR),
  client_ip VARCHAR2(40 CHAR),
  client_port VARCHAR2(5 CHAR),
  request_protocol VARCHAR2(255 CHAR) NULL ,
  request_operation VARCHAR2(255 CHAR) NULL ,
  request_secure VARCHAR2(255 CHAR) NULL ,
  request_method VARCHAR2(7 CHAR) NULL ,
  request_path VARCHAR2(255 CHAR) NULL ,
  request_queryparameters CLOB(2M) NULL ,
  request_headers CLOB NULL ,
  request_cookies CLOB NULL ,
  response_headers CLOB NULL ,
  response_status VARCHAR2(10 CHAR) NULL ,
  response_statuscode VARCHAR2(255 CHAR) NULL ,
  response_elapsedtime VARCHAR2(255 CHAR) NULL ,
  response_elapsedtimeunits VARCHAR2(255 CHAR) NULL
);
COMMENT ON COLUMN httpaccess.timestamp IS 'Date format: 2011-09-09T14:58:17.654+02:00'
;
PROMPT Creating Primary Key Constraint PRIMARY_ACCESS on table httpaccess ...
ALTER TABLE httpaccess
ADD CONSTRAINT PRIMARY_ACCESS PRIMARY KEY
(
  id
)
ENABLE
;
-- -----------------------------------------------------
-- Table auditauthentication
-- -----------------------------------------------------
PROMPT Creating TABLE ldapaccess ...
CREATE TABLE ldapaccess (
  id VARCHAR2(56 CHAR) NOT NULL,
  timestamp_ VARCHAR2(29 CHAR) NOT NULL,
  transactionid VARCHAR2(255 CHAR) NOT NULL,
  eventname VARCHAR2(255 CHAR),
  userid VARCHAR2(255 CHAR),
  server_ip VARCHAR2(40 CHAR),
  server_port VARCHAR2(5 CHAR),
  client_host VARCHAR2(255 CHAR),
  client_ip VARCHAR2(40 CHAR),
  client_port VARCHAR2(5 CHAR),
  request_protocol VARCHAR(255) ,
  request_operation VARCHAR(255) ,
  request_attr VARCHAR(255) NULL,
  request_attrs VARCHAR(255) NULL ,
  request_authType VARCHAR(255) NULL ,
  request_connId INTEGER ,
  request_msgId INTEGER ,
  request_controls VARCHAR(255) NULL ,
  request_deleteOldRDN BOOLEAN NULL ,
  request_dn VARCHAR(255) NULL ,
  request_filter VARCHAR(255) NULL ,
  request_idToAbandon VARCHAR(255) NULL ,
  request_message VARCHAR(255) NULL ,
  request_name VARCHAR(255) NULL ,
  request_newRDN VARCHAR(255) NULL ,
  request_newSup VARCHAR(255) NULL ,
  request_oid VARCHAR(255) NULL ,
  request_opType VARCHAR(255) NULL ,
  request_operation VARCHAR(255) NULL ,
  request_protocol VARCHAR(255) NULL ,
  request_scope VARCHAR(255) NULL ,
  request_version VARCHAR(255) NULL ,
  response_additionalItems VARCHAR(255) NULL ,
  response_controls VARCHAR(255) NULL ,
  response_failureReason VARCHAR(255) NULL ,
  response_maskedMessage VARCHAR(255) NULL ,
  response_maskedResult VARCHAR(255) NULL ,
  response_nentries INTEGER NULL ,
  response_reason VARCHAR(255) NULL ,
  response_status VARCHAR(10) NULL ,
  response_statuscode VARCHAR(255) NULL ,
  response_elapsedtime VARCHAR(255) NULL ,
  response_elapsedtimeunits VARCHAR(255) NULL ,
);
COMMENT ON COLUMN ldapaccess.timestamp IS 'Date format: 2011-09-09T14:58:17.654+02:00'
;
PROMPT Creating PRIMARY KEY CONSTRAINT PRIMARY_AUTHENTICATION ON TABLE ldapaccess ...
ALTER TABLE ldapaccess
ADD CONSTRAINT PRIMARY_AUTHENTICATION PRIMARY KEY
(
  userid,
  request_dn
)
ENABLE
;
COMMIT;
opendj-server-legacy/resource/config/audit-handlers/splunk-config.json-example
New file
@@ -0,0 +1,28 @@
//
// Example configuration for splunk handler.
// Edit a copy of the file with your settings.
// Strip comments before use with grep -v '^[ ]*//' < your-file.json
//
{
  "class": "org.forgerock.audit.handlers.splunk.SplunkAuditEventHandler",
  "config": {
    "authzToken": "00000000-0000-0000-0000-000000000000",
    "buffering": {
      "maxBatchedEvents": 500,
      "maxSize": 10000,
      "writeInterval": "100 millis"
    },
    "connection": {
      // Optional
      "host": "localhost",
      "port": 8088,
      "useSSL": false
    },
    "enabled": false,
    "name": "splunk",
    "topics": [
      "ldap-access",
      "http-access"
    ]
  }
}
opendj-server-legacy/resource/config/audit-handlers/syslog-config.json-example
New file
@@ -0,0 +1,29 @@
//
// Example configuration for syslog handler.
// Edit a copy of the file with your settings.
// Strip comments before use with grep -v '^[ ]*//' < your-file.json
//
{
  "class": "org.forgerock.audit.handlers.syslog.SyslogAuditEventHandler",
  "config": {
    // Optional
    "buffering": {
      "enabled": false,
      "maxSize": 5000
    },
    "enabled": false,
    "facility": "LOCAL0",
    "host": "localhost",
    "name": "syslog",
    "port": 514,
    // Permitted values: UDP, TCP
    "transportProtocol": "TCP",
    // Only applies to transportProtocol TCP, in which case it is mandatory
    "connectionTimeout": "30",
    "topics": [
      "ldap-acces",
      "http-access"
    ]
  }
}
opendj-server-legacy/src/main/resources/org/opends/server/loggers/audit-config.json
@@ -1,385 +1,385 @@
{
  "additionalTopics" : {
      "http-access": {
        "schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "id": "/",
          "type": "object",
          "properties": {
            "_id": {
              "description": "org.forgerock.audit.events.access.id",
  "additionalTopics": {
    "http-access": {
      "schema": {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "id": "/",
        "type": "object",
        "properties": {
          "_id": {
            "description": "org.forgerock.audit.events.access.id",
            "type": "string"
          },
          "timestamp": {
            "description": "org.forgerock.audit.events.access.timestamp",
            "type": "string"
          },
          "eventName": {
            "description": "org.forgerock.audit.events.access.eventName",
            "type": "string"
          },
          "transactionId": {
            "description": "org.forgerock.audit.events.access.transactionId",
            "type": "string"
          },
          "userId": {
            "description": "org.forgerock.audit.events.access.userId",
            "type": "string"
          },
          "trackingIds": {
            "description": "org.forgerock.audit.events.access.trackingIds",
            "type": "array",
            "items": {
              "id": "0",
              "type": "string"
            },
            "timestamp": {
              "description": "org.forgerock.audit.events.access.timestamp",
              "type": "string"
            },
            "eventName": {
              "description": "org.forgerock.audit.events.access.eventName",
              "type": "string"
            },
            "transactionId": {
              "description": "org.forgerock.audit.events.access.transactionId",
              "type": "string"
            },
            "userId": {
              "description": "org.forgerock.audit.events.access.userId",
              "type": "string"
            },
            "trackingIds": {
              "description": "org.forgerock.audit.events.access.trackingIds",
              "type": "array",
              "items": {
                "id": "0",
            }
          },
          "server": {
            "type": "object",
            "properties": {
              "ip": {
                "description": "org.forgerock.audit.events.access.server.ip",
                "type": "string"
              },
              "port": {
                "description": "org.forgerock.audit.events.access.server.port",
                "type": "string"
              }
            },
            "server": {
              "type": "object",
              "properties": {
                "ip": {
                  "description": "org.forgerock.audit.events.access.server.ip",
                  "type": "string"
                },
                "port": {
                  "description": "org.forgerock.audit.events.access.server.port",
                  "type": "string"
                }
            }
          },
          "client": {
            "type": "object",
            "properties": {
              "host": {
                "description": "org.forgerock.audit.events.access.client.host",
                "type": "string"
              },
              "ip": {
                "description": "org.forgerock.audit.events.access.client.ip",
                "type": "string"
              },
              "port": {
                "description": "org.forgerock.audit.events.access.client.port",
                "type": "string"
              }
            },
            "client": {
              "type": "object",
              "properties": {
                "host": {
                  "description": "org.forgerock.audit.events.access.client.host",
                  "type": "string"
                },
                "ip": {
                  "description": "org.forgerock.audit.events.access.client.ip",
                  "type": "string"
                },
                "port": {
                  "description": "org.forgerock.audit.events.access.client.port",
                  "type": "string"
                }
            }
          },
          "request": {
            "type": "object",
            "properties": {
              "protocol": {
                "description": "org.forgerock.audit.events.access.request.protocol",
                "type": "string"
              },
              "operation": {
                "description": "org.forgerock.audit.events.access.request.operation",
                "type": "string"
              },
              "detail": {
                "description": "org.forgerock.audit.events.access.request.detail",
                "type": "object"
              }
            },
            "request": {
              "type": "object",
              "properties": {
                "protocol": {
                  "description": "org.forgerock.audit.events.access.request.protocol",
                  "type": "string"
                },
                "operation": {
                  "description": "org.forgerock.audit.events.access.request.operation",
                  "type": "string"
                },
                "detail": {
                  "description": "org.forgerock.audit.events.access.request.detail",
                  "type": "object"
                }
              }
            },
            "http": {
              "type": "object",
              "properties": {
                "request": {
                  "description": "org.forgerock.audit.events.access.http.request",
                  "type": "object",
                  "properties": {
                    "secure": {
                      "description": "org.forgerock.audit.events.access.http.secure",
                      "type": "boolean"
                    },
                    "method": {
                      "description": "org.forgerock.audit.events.access.http.method",
                      "type": "string"
                    },
                    "path": {
                      "description": "org.forgerock.audit.events.access.http.path",
                      "type": "string"
                    },
                    "queryParameters": {
                      "description": "org.forgerock.audit.events.access.http.queryParameters",
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
            }
          },
          "http": {
            "type": "object",
            "properties": {
              "request": {
                "description": "org.forgerock.audit.events.access.http.request",
                "type": "object",
                "properties": {
                  "secure": {
                    "description": "org.forgerock.audit.events.access.http.secure",
                    "type": "boolean"
                  },
                  "method": {
                    "description": "org.forgerock.audit.events.access.http.method",
                    "type": "string"
                  },
                  "path": {
                    "description": "org.forgerock.audit.events.access.http.path",
                    "type": "string"
                  },
                  "queryParameters": {
                    "description": "org.forgerock.audit.events.access.http.queryParameters",
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "headers": {
                      "description": "org.forgerock.audit.events.access.http.headers",
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                    }
                  },
                  "headers": {
                    "description": "org.forgerock.audit.events.access.http.headers",
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "cookies": {
                      "description": "org.forgerock.audit.events.access.http.cookies",
                      "type": "object",
                      "additionalProperties": {
                    }
                  },
                  "cookies": {
                    "description": "org.forgerock.audit.events.access.http.cookies",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                }
              },
              "response": {
                "description": "org.forgerock.audit.events.access.http.response",
                "type": "object",
                "properties": {
                  "headers": {
                    "description": "org.forgerock.audit.events.access.http.request.headers",
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "response": {
                  "description": "org.forgerock.audit.events.access.http.response",
                  "type": "object",
                  "properties": {
                    "headers": {
                      "description": "org.forgerock.audit.events.access.http.request.headers",
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            },
            "response": {
              "type": "object",
              "properties": {
                "status": {
                  "description": "org.forgerock.audit.events.access.response.status",
                  "type": "string"
                },
                "statusCode": {
                  "description": "org.forgerock.audit.events.access.response.statusCode",
                  "type": "string"
                },
                "detail": {
                  "description": "org.forgerock.audit.events.access.response.detail",
                  "type": "string"
                },
                "elapsedTime": {
                  "description": "org.forgerock.audit.events.access.response.elapsedTime",
                  "type": "integer"
                },
                "elapsedTimeUnits": {
                  "description": "org.forgerock.audit.events.access.response.elapsedTimeUnits",
                  "type": "string"
                }
            }
          },
          "response": {
            "type": "object",
            "properties": {
              "status": {
                "description": "org.forgerock.audit.events.access.response.status",
                "type": "string"
              },
              "statusCode": {
                "description": "org.forgerock.audit.events.access.response.statusCode",
                "type": "string"
              },
              "detail": {
                "description": "org.forgerock.audit.events.access.response.detail",
                "type": "string"
              },
              "elapsedTime": {
                "description": "org.forgerock.audit.events.access.response.elapsedTime",
                "type": "integer"
              },
              "elapsedTimeUnits": {
                "description": "org.forgerock.audit.events.access.response.elapsedTimeUnits",
                "type": "string"
              }
            }
          }
        }
      },
      "ldap-access": {
        "schema": {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "id": "/",
          "type": "object",
          "properties": {
            "_id": {
              "description": "org.forgerock.audit.events.access.id",
              "type": "string"
            },
            "timestamp": {
              "description": "org.forgerock.audit.events.access.timestamp",
              "type": "string"
            },
            "eventName": {
              "description": "org.forgerock.audit.events.access.eventName",
              "type": "string"
            },
            "transactionId": {
              "description": "org.forgerock.audit.events.access.transactionId",
              "type": "string"
            },
            "userId": {
              "description": "org.forgerock.audit.events.access.userId",
              "type": "string"
            },
            "runAs": {
              "description": "org.forgerock.audit.events.activity.runAs",
              "type": "string"
            },
            "server": {
              "type": "object",
              "properties": {
                "ip": {
                  "description": "org.forgerock.audit.events.access.server.ip",
                  "type": "string"
                },
                "port": {
                  "description": "org.forgerock.audit.events.access.server.port",
                  "type": "string"
                }
      }
    },
    "ldap-access": {
      "schema": {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "id": "/",
        "type": "object",
        "properties": {
          "_id": {
            "description": "org.forgerock.audit.events.access.id",
            "type": "string"
          },
          "timestamp": {
            "description": "org.forgerock.audit.events.access.timestamp",
            "type": "string"
          },
          "eventName": {
            "description": "org.forgerock.audit.events.access.eventName",
            "type": "string"
          },
          "transactionId": {
            "description": "org.forgerock.audit.events.access.transactionId",
            "type": "string"
          },
          "userId": {
            "description": "org.forgerock.audit.events.access.userId",
            "type": "string"
          },
          "runAs": {
            "description": "org.forgerock.audit.events.activity.runAs",
            "type": "string"
          },
          "server": {
            "type": "object",
            "properties": {
              "ip": {
                "description": "org.forgerock.audit.events.access.server.ip",
                "type": "string"
              },
              "port": {
                "description": "org.forgerock.audit.events.access.server.port",
                "type": "string"
              }
            },
            "client": {
              "type": "object",
              "properties": {
                "host": {
                  "description": "org.forgerock.audit.events.access.client.host",
                  "type": "string"
                },
                "ip": {
                  "description": "org.forgerock.audit.events.access.client.ip",
                  "type": "string"
                },
                "port": {
                  "description": "org.forgerock.audit.events.access.client.port",
                  "type": "string"
                }
            }
          },
          "client": {
            "type": "object",
            "properties": {
              "host": {
                "description": "org.forgerock.audit.events.access.client.host",
                "type": "string"
              },
              "ip": {
                "description": "org.forgerock.audit.events.access.client.ip",
                "type": "string"
              },
              "port": {
                "description": "org.forgerock.audit.events.access.client.port",
                "type": "string"
              }
            },
            "request": {
              "type": "object",
              "properties": {
                "protocol": {
                  "description": "org.forgerock.audit.events.access.request.protocol",
                  "type": "string"
                },
                "operation": {
                  "description": "org.forgerock.audit.events.access.request.operation",
                  "type": "string"
                },
                "connId": {
                  "id": "connId",
                  "type": "string"
                },
                "msgId": {
                  "id": "msgId",
                  "type": "string"
                },
                "dn": {
                  "id": "dn",
                  "type": "string"
                },
                "scope": {
                  "id": "scope",
                  "type": "string"
                },
                "filter": {
                  "id": "filter",
                  "type": "string"
                },
                "attrs": {
                  "id": "attrs",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "authType": {
                  "id": "authType",
                  "type": "string"
                },
                "controls": {
                  "id": "controls",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "attr" : {
                  "id" : "attr",
                  "type" : "string"
                },
                "idToAbandon" : {
                  "id" : "idToAbandon",
                  "type" : "integer"
                },
                "message" : {
                  "id" : "message",
                  "type" : "string"
                },
                "name" : {
                  "id" : "name",
                  "type" : "string"
                },
                "newRDN" : {
                  "id" : "newRDN",
                  "type" : "string"
                },
                "newSup" : {
                  "id" : "newSup",
                  "type" : "string"
                },
                "deleteOldRDN" : {
                  "id" : "deleteOldRDN",
                  "type" : "boolean"
                },
                "oid" : {
                  "id" : "oid",
                  "type" : "string"
                },
                "version" : {
                  "id" : "version",
                  "type" : "string"
                },
                "opType": {
                  "id": "opType",
            }
          },
          "request": {
            "type": "object",
            "properties": {
              "protocol": {
                "description": "org.forgerock.audit.events.access.request.protocol",
                "type": "string"
              },
              "operation": {
                "description": "org.forgerock.audit.events.access.request.operation",
                "type": "string"
              },
              "connId": {
                "id": "connId",
                "type": "string"
              },
              "msgId": {
                "id": "msgId",
                "type": "string"
              },
              "dn": {
                "id": "dn",
                "type": "string"
              },
              "scope": {
                "id": "scope",
                "type": "string"
              },
              "filter": {
                "id": "filter",
                "type": "string"
              },
              "attrs": {
                "id": "attrs",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "authType": {
                "id": "authType",
                "type": "string"
              },
              "controls": {
                "id": "controls",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "attr": {
                "id": "attr",
                "type": "string"
              },
              "idToAbandon": {
                "id": "idToAbandon",
                "type": "integer"
              },
              "message": {
                "id": "message",
                "type": "string"
              },
              "name": {
                "id": "name",
                "type": "string"
              },
              "newRDN": {
                "id": "newRDN",
                "type": "string"
              },
              "newSup": {
                "id": "newSup",
                "type": "string"
              },
              "deleteOldRDN": {
                "id": "deleteOldRDN",
                "type": "boolean"
              },
              "oid": {
                "id": "oid",
                "type": "string"
              },
              "version": {
                "id": "version",
                "type": "string"
              },
              "opType": {
                "id": "opType",
                "type": "string"
              }
            },
            "response": {
              "type": "object",
              "properties": {
                "status": {
                  "description": "org.forgerock.audit.events.access.response.status",
            }
          },
          "response": {
            "type": "object",
            "properties": {
              "status": {
                "description": "org.forgerock.audit.events.access.response.status",
                "type": "string"
              },
              "statusCode": {
                "description": "org.forgerock.audit.events.access.response.statusCode",
                "type": "string"
              },
              "detail": {
                "description": "org.forgerock.audit.events.access.response.detail",
                "type": "string"
              },
              "elapsedTime": {
                "description": "org.forgerock.audit.events.access.response.elapsedTime",
                "type": "integer"
              },
              "elapsedTimeUnits": {
                "description": "org.forgerock.audit.events.access.response.elapsedTimeUnits",
                "type": "string"
              },
              "nentries": {
                "id": "nentries",
                "type": "string"
              },
              "controls": {
                "id": "controls",
                "type": "array",
                "items": {
                  "type": "string"
                },
                "statusCode": {
                  "description": "org.forgerock.audit.events.access.response.statusCode",
                  "type": "string"
                },
                "detail": {
                  "description": "org.forgerock.audit.events.access.response.detail",
                  "type": "string"
                },
                "elapsedTime": {
                  "description": "org.forgerock.audit.events.access.response.elapsedTime",
                  "type": "integer"
                },
                "elapsedTimeUnits": {
                  "description": "org.forgerock.audit.events.access.response.elapsedTimeUnits",
                  "type": "string"
                },
                "nentries": {
                  "id": "nentries",
                  "type": "string"
                },
                "controls": {
                  "id": "controls",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "additionalItems" : {
                  "id" : "additionalItems",
                  "type" : "string"
                },
                "failureReason" : {
                  "id" : "failureReason",
                  "type" : "string"
                },
                "maskedResult" : {
                  "id" : "maskedResult",
                  "type" : "integer"
                },
                "maskedMessage" : {
                  "id" : "maskedMessage",
                  "type" : "string"
                },
                "reason" : {
                  "id" : "reason",
                  "type" : "string"
                }
              },
              "additionalItems": {
                "id": "additionalItems",
                "type": "string"
              },
              "failureReason": {
                "id": "failureReason",
                "type": "string"
              },
              "maskedResult": {
                "id": "maskedResult",
                "type": "integer"
              },
              "maskedMessage": {
                "id": "maskedMessage",
                "type": "string"
              },
              "reason": {
                "id": "reason",
                "type": "string"
              }
            }
          }
        }