{"id":20471092,"url":"https://github.com/drupal-modules/ldap","last_synced_at":"2026-04-16T23:02:52.477Z","repository":{"id":151863197,"uuid":"113041772","full_name":"drupal-modules/ldap","owner":"drupal-modules","description":"Lightweight Directory Access Protocol (LDAP)","archived":false,"fork":false,"pushed_at":"2017-12-04T12:49:38.000Z","size":2957,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"8.x-3.x","last_synced_at":"2025-03-05T13:37:16.432Z","etag":null,"topics":["drupal-6","drupal-7","drupal-8","ldap"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drupal-modules.png","metadata":{"files":{"readme":"README.developers.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2017-12-04T12:49:19.000Z","updated_at":"2017-12-04T12:50:55.000Z","dependencies_parsed_at":"2023-05-12T22:45:36.451Z","dependency_job_id":null,"html_url":"https://github.com/drupal-modules/ldap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/drupal-modules/ldap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drupal-modules%2Fldap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drupal-modules%2Fldap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drupal-modules%2Fldap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drupal-modules%2Fldap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drupal-modules","download_url":"https://codeload.github.com/drupal-modules/ldap/tar.gz/refs/heads/8.x-3.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drupal-modules%2Fldap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31907722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["drupal-6","drupal-7","drupal-8","ldap"],"created_at":"2024-11-15T14:14:55.871Z","updated_at":"2026-04-16T23:02:52.452Z","avatar_url":"https://github.com/drupal-modules.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview of the LDAP suite\n\nThe LDAP suite of modules is modular to allow you to pick and choose the \nelements your use-case requires. The current structure is not necessarily ideal\nbut rather keeps with the existing framework to avoid additional migration work.\n\nThe architecture in Drupal 8 differs significantly from Drupal 7 and will need \nto evolve further to become better testable. The currently present (non-working)\nintegration tests relied on a highly complex configuration and setup based on\nSimpleTest. The goal of the current branch is to improve test coverage wherever\npossible through unit tests and this testing architecture is being phased out\nstep by step.\n\n## Setting up a development environment\n\nTo quickly get up and running without using a production system to query against\nyou can make use of Docker. \n\nAn example configuration is provided in the docs directory based on the Harry \nPotter schools. That script - based on a script by\n[Laudanum](https://github.com/Laudanum) - populates a Docker instance with users\nand groups. A matching server template for LDAP is provided as well.\n\nNote that in group configuration you could use businessCategory to derive user \ngroups from attributes but this is disabled so that group DNs are queried.\n\nWorking with LDAP and the various elements of OpenLDAP, such as slapd, are\nnot easy to work with. See also some examples on the\n[track hacks](http://trac-hacks.org/wiki/LdapPluginTests) page.\n\n### User binding\n\nIf you want to bind with user credentials, you only need to modify the \ngrants.ldif to allow for it. Here is an example which simply allows anyone:\n\n```\n11,12c11,13\n\u003c   by dn=\"cn=admin,dc=hogwarts,dc=edu\" write\n\u003c   by * read\n\\ No newline at end of file\n---\n\u003e   by anonymous auth\n\u003e   by dn=\"cn=admin,dc=hogwarts,dc=edu\" write\n\u003e   by * read\n```\n\n## Various LDAP Project Notes\n\n### Case Sensitivity and Character Escaping in LDAP Modules\n\nThe class MassageAttributes should be used for dealing with case sensitivity\nand character escaping consistently. See the functions for further information.\n\nA filter might be built as follows:\n\n```php\n$massage = new MassageAttributes;\n$username = $massage-\u003equeryLdapAttributeValue($username);\n$objectclass = $massage-\u003eprocessAttributeName($item);\n$filter = \"(\u0026(cn=$username)(objectClass=$objectclass))\";\n```\n\nSee ConversionHelper for working with fields directly.\n\n### Common variables used in ldap_* and their structures\n\nThe structure of $ldap_user and $ldap_entry are different!\n\n#### $ldap_user\n@see LdapServer::matchUsernameToExistingLdapEntry() return\n\n#### $ldap_entry and $ldap_*_entry.\n@see LdapServer::ldap_search() return array\n\n####  $user_attr_key\nkey of form \u003cattr_type\u003e.\u003cattr_name\u003e[:\u003cinstance\u003e] such as field.lname, \nproperty.mail, field.aliases:2\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrupal-modules%2Fldap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrupal-modules%2Fldap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrupal-modules%2Fldap/lists"}