The LdapToolsBundle provides easy integration of LDAP for Symfony via LdapTools.
- An LDAP authentication provider, including AdvancedUserInterface support.
- An LDAP form type to easily use LDAP objects in forms.
- An LDAP type for Doctrine to easily store and retrieve LDAP results in a Doctrine entity.
- Logging capabilities for LDAP operations.
- Web Debug Toolbar integration for LDAP operations.
- Integration of LdapTools events for LDAP operations (authentication, creation, modification, etc) using service tags.
Note: The LdapTools library requires PHP 5.6+.
The recommended way to install the LdapToolsBundle is using Composer:
composer require ldaptools/ldaptools-bundle
Then enable the bundle in the kernel:
// app/AppKernel.php
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new LdapTools\Bundle\LdapToolsBundle\LdapToolsBundle(),
);
// ...
}
}
After installing the bundle you can run the following command to assist in generating/testing your LDAP config:
# It will prompt for some basic questions (LDAP server, username/password to use, etc)
php bin/console ldaptools:generate:config
Adding your domain(s) to the config.yml
file is as easy as the following example:
# app/config/config.yml
ldap_tools:
domains:
# The below "example" key can be anything you want. It just has to be a unique name for the YML config.
example:
# The LDAP FQDN is required
domain_name: example.local
# The username to use for the LDAP connection
username: foo
# The password to use for the username
password: secret
# The base DN for LDAP searches (queried from the RootDSE if not provided)
base_dn: "dc=example,dc=local"
# The LDAP servers to use for the connection (Queried from DNS if not provided)
servers: ["dc1", "dc2", "dc3"]
# Define another domain if you want
foo:
domain_name: foo.bar
username: foo
password: bar
servers: ['dc1.foo.bar', 'dc2.foo.bar']
base_dn: 'dc=foo,dc=bar'
Domain configuration options are also documented in the LdapTools documentation.
Then in your controller you can use the ldap_tools.ldap_manager
service to query/modify/create LDAP objects...
class DefaultController extends Controller
{
public function indexAction()
{
$ldap = $this->get('ldap_tools.ldap_manager');
$users = $ldap->buildLdapQuery()->fromUsers()->getLdapQuery()->getResult();
$users->count();
foreach ($users as $user) {
$user->getFirstName();
$user->getLastName();
$user->getUsername();
}
# ...
}
}
If you want a quick way to retrieve your server's LDAP SSL certificate you can run a simple command to output it:
# Just supply your LDAP server name...
php bin/console ldaptools:generate:sslcert --server "servername"