{"id":20655957,"url":"https://github.com/it-at-m/ezldap","last_synced_at":"2025-07-16T23:32:25.604Z","repository":{"id":212642509,"uuid":"731088847","full_name":"it-at-m/ezLDAP","owner":"it-at-m","description":"custom tailored REST API for read access to LDAP","archived":false,"fork":false,"pushed_at":"2025-07-04T20:56:37.000Z","size":192,"stargazers_count":4,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-04T21:35:19.558Z","etag":null,"topics":["java","ldap","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/it-at-m.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-13T10:32:46.000Z","updated_at":"2025-07-04T20:56:39.000Z","dependencies_parsed_at":"2023-12-20T16:29:36.184Z","dependency_job_id":"f2b83589-58c1-4a2e-b185-38b58f76d6a4","html_url":"https://github.com/it-at-m/ezLDAP","commit_stats":null,"previous_names":["it-at-m/ezldap"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/it-at-m/ezLDAP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/it-at-m%2FezLDAP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/it-at-m%2FezLDAP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/it-at-m%2FezLDAP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/it-at-m%2FezLDAP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/it-at-m","download_url":"https://codeload.github.com/it-at-m/ezLDAP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/it-at-m%2FezLDAP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265550343,"owners_count":23786545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","ldap","spring-boot"],"created_at":"2024-11-16T18:13:11.949Z","updated_at":"2025-07-16T23:32:25.559Z","avatar_url":"https://github.com/it-at-m.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ezLDAP - easy read access to LDAP\n\n**ezLDAP** enables easy read access to the internal LDAP directory of the City of Munich (LHM) by providing a custom tailored HTTP-based API.\n\n## Run\n\nTo function properly, ezLDAP requires a directory schema with LHM customized attributes ([see example schema data](lib-core/src/test/resources/ldap)). To spin up such an environment, you can use the `docker-compose` file provided:\n\n```bash\ndocker-compose up\n```\n\nThis spins up a openLDAP server with LHM schema extensions and some testdata on port `8389` and phpLDAPadmin on \u003chttp://localhost:8090\u003e. You can use the [default admin credentials of osixia/openldap](https://github.com/osixia/docker-openldap) (User-DN `cn=admin,dc=example,dc=org`, Password `admin`) to connect.\n\n```bash\ncd microservice\nmvn spring-boot:run -Dspring-boot.run.jvmArguments=\"-Dezldap.ldap.url=ldap://localhost:8389 -Dezldap.ldap.user-dn=cn=admin,dc=example,dc=org -Dezldap.ldap.password=admin -Dezldap.ldap.user-search-base=o=users,dc=example,dc=org -Dezldap.ldap.ou-search-base=o=oubase,dc=example,dc=org\"\n```\n\n## API Documentation\n\nThe API of ezLDAP is documented via OpenAPI v3 and can be accessed via Swagger-UI: \u003chttp://localhost:8080/swagger-ui/index.html\u003e\n\n### Server cache\n\nServer caching is disabled by default, but can be activated with property `ezldap.cache.enabled=true`.\n\nWhen enabled, the LDAP queries are cached on the JVM heap, off-heap and on disk.\n\nThe folder for disk caching can be configured by adjusting `ezldap.cache.disk.dir`.\n\nTo further customize the caching, you can also store your own, adapted [`ezldap-ehcache.xml`](lib-spring\\src\\main\\resources\\ezldap-ehcache.xml) on the class path.\n\n## Integrate\n\n**ezLDAP** can also be embedded in existing applications using the `lib-core` or `lib-spring` modules.\n\n### lib-core\n\nProvides direct access to the LDAP via `LdapService`.\n\nMaven Dependency:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ede.muenchen.oss.ezldap\u003c/groupId\u003e\n  \u003cartifactId\u003eezLDAP-lib-core\u003c/artifactId\u003e\n  \u003cversion\u003elatest-version\u003c/version\u003e\u003c!-- see Maven Central --\u003e\n\u003c/dependency\u003e\n```\n\nUsage:\n\n```java\nLdapService ldapService = new LdapService(\"ldaps://ldap.example.org:636\", \"\u003c\u003cldap-user-dn\u003e\u003e\", \"\u003c\u003cldap-password\u003e\u003e\",\n  \"ou=users,dc=example,dc=org\",           // User Search Base\n  \"ou=organisation,dc=example,dc=org\"     // OU Search Base\n);\n\n// start using\nOptional\u003cLdapUserDTO\u003e = ldapService.getPersonWithUID(\"erika.musterfrau\");\n```\n\n#### lib-spring\n\nActivates the REST API controller endpoint `/v1/ldap` in a Spring Boot application via a Spring `AutoConfiguration`.\n\nMaven Dependency:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ede.muenchen.oss.ezldap\u003c/groupId\u003e\n  \u003cartifactId\u003eezLDAP-lib-spring\u003c/artifactId\u003e\n  \u003cversion\u003elatest-version\u003c/version\u003e\u003c!-- see Maven Central --\u003e\n\u003c/dependency\u003e\n```\n\nUsage:\n\n```java\n@SpringBootApplication\n@EnableEzLDAP // enables '/v1/ldap' REST endpoints\npublic class MySpringBootApplication {\n  // [...]\n}\n```\n\nrequired properties (e.g. in `application.properties`):\n\n```ini\nezldap.ldap.url=ldaps://ldap.example.org:636\nezldap.ldap.user-dn=\u003c\u003cldap-user-dn\u003e\u003e\nezldap.ldap.password=\u003c\u003cldap-password\u003e\u003e\nezldap.ldap.user-search-base=\"ou=users,dc=example,dc=org\"\nezldap.ldap.ou-search-base=\"ou=organisation,dc=example,dc=org\"\nezldap.cache.enabled=true\nezldap.cache.disk.dir=./target/cache\n```\n\n**Note**: When integrating into an existing Spring Boot application, the authentication configuration must be done via the Spring Security configuration of the application! For an example, see [SecurityConfiguration.java of the microservice](microservice/src/main/java/de/muenchen/oss/ezldap/config/SecurityConfiguration.java).\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please open an issue with the tag \"enhancement\", fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Open an issue with the tag \"enhancement\"\n2. Fork the Project\n3. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n4. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n5. Push to the Branch (`git push origin feature/AmazingFeature`)\n6. Open a Pull Request\n\n## License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) file for more information.\n\n## Contact\n\nit@M - \u003copensource@muenchen.de\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fit-at-m%2Fezldap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fit-at-m%2Fezldap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fit-at-m%2Fezldap/lists"}