Simple REST API to query a LDAP server
docker run --rm \
-p 8080:8080 \
-e LDAP_HOST=ldaps://ldap.jumpcloud.com:636 \
-e LDAP_USERNAME=devatherock \
-e LDAP_PASSWORD=dummy \
devatherock/ldap-search-api:latest
Environment Variable Name | YAML Variable Name | Required | Default | Description |
---|---|---|---|---|
LDAP_HOST | ldap.host | true | (None) | The full host name of the LDAP server. Example: ldaps://ldap.jumpcloud.com:636 |
LDAP_USERNAME | ldap.username | true | (None) | The LDAP bind username. Could be a simple username like devatherock or a DN like uid=devatherock,ou=Users,dc=jumpcloud,dc=com depending on how the LDAP server is configured |
LDAP_PASSWORD | ldap.password | true | (None) | The LDAP bind password |
LDAP_BASE_DN | ldap.base-dn | false | (None) | The default base DN to search against |
LDAP_BINARY_ATTRIBUTES | ldap.binary-attributes | false | (None) | Attributes in the search result that have binary values |
LDAP_READ_TIMEOUT_MILLIS | ldap.read-timeout-millis | false | 10000 | Read timeout for the search, in milliseconds. Defaults to 10 seconds |
LDAP_CONNECTION_POOL_ENABLED | ldap.connection-pool.enabled | false | true | Indicates if a connection pool should be used |
LDAP_CONNECTION_POOL_CORE_SIZE | ldap.connection-pool.core-size | false | 8 | Initial size of the connection pool |
LDAP_CONNECTION_POOL_MAX_SIZE | ldap.connection-pool.max-size | false | 8 | Maximum size of the connection pool |
LDAP_CONNECTION_POOL_TIME_TO_LIVE_MILLIS | ldap.connection-pool.timeToLiveMillis | false | 1,800,000 | The total time a connection in the pool will be kept open, in milliseconds. Defaults to 30 minutes |
LOGGER_LEVELS_ROOT | (None) | false | INFO | SLF4J log level, for all(framework and custom) code |
LOGGER_LEVELS_IO_GITHUB_DEVATHEROCK | (None) | false | INFO | SLF4J log level, for custom code |
MICRONAUT_SERVER_PORT | micronaut.server.port | false | 8080 | Port in which the app listens on |
MICRONAUT_CONFIG_FILES | (None) | false | (None) | Path to YAML config files. The YAML files can be used to specify complex, object and array properties |
JACKSON_SERIALIZATION_INDENT_OUTPUT | jackson.serialization.indent-output | false | (None) | Set to true to enable JSON pretty-print of response |
LOGBACK_CONFIGURATION_FILE | (None) | false | (None) | Path to logback configuration file |
When the app is running, detailed API documentation can be accessed at {host}/swagger-ui
or {host}/swagger/ldap-search-api-{version}.yml
. The available endpoints are listed below for reference:
/search?filter=<an ldap query>&limit=<number of results>
- Searches LDAP under the given base DN with the supplied filter criteria
[
{
"loginShell": "/bin/bash",
"uid": "testdummy",
"homeDirectory": "/home/test",
"mail": "test.dummy@dummy.com",
"uidNumber": "1234",
"givenName": "Test",
"objectClass": [
"top",
"person",
"organizationalPerson",
"inetOrgPerson",
"shadowAccount",
"posixAccount",
"jumpcloudUser"
],
"sn": "User",
"gidNumber": "1234",
"cn": "Test User"
}
]
- Set the environment variable
LOGGER_LEVELS_ROOT
toDEBUG
to enable all debug logs - custom and framework - Set the environment variable
LOGGER_LEVELS_IO_GITHUB_DEVATHEROCK
toDEBUG
to enable debug logs only in custom code - For fine-grained logging control, supply a custom logback.xml file
and set the environment variable
LOGBACK_CONFIGURATION_FILE
to/path/to/custom/logback.xml
Refer logstash-logback-encoder documentation to customize the field names and formats in the log. To output logs as JSON, set the environment variable LOGBACK_CONFIGURATION_FILE
to logback-json.xml