Catalyst::Model::LDAP - LDAP model class for Catalyst


version 0.21


    # Use the Catalyst helper
    script/ model Person LDAP ou=People,dc=ufl,dc=edu

    # Or, in lib/MyApp/Model/
    package MyApp::Model::Person;

    use base qw/Catalyst::Model::LDAP/;

        host => '',
        base => 'ou=People,dc=ufl,dc=edu',


    # Then, in your controller
    my $mesg = $c->model('Person')->search('(cn=Lou Rhodes)');
    my @entries = $mesg->entries;
    print $entries[0]->sn;


This is the Net::LDAP model class for Catalyst. It is nothing more than a simple wrapper for Net::LDAP.

This class simplifies LDAP access by letting you configure a common set of bind arguments. It also lets you configure a base DN for searching.

Please refer to the Net::LDAP documentation for information on what else is available.


The following configuration parameters are supported:

  • host

    The LDAP server's fully qualified domain name (FQDN), e.g. Can also be an IP address, e.g.

  • base

    The base distinguished name (DN) for searching the directory, e.g. ou=People,dc=ufl,dc=edu.

  • dn

    (Optional) The bind DN for connecting to the directory, e.g. dn=admin,dc=ufl,dc=edu. This can be anyone that has permission to search under the base DN, as per your LDAP server's access control lists.

  • password

    (Optional) The password for the specified bind DN.

  • start_tls

    (Optional) Set to 1 to use TLS when binding to the LDAP server, for secure connections.

  • start_tls_options

    (Optional) A hashref containing options to use when binding using TLS to the LDAP server.

  • options

    (Optional) A hashref containing options to pass to "search" in Catalyst::Model::LDAP::Connection. For example, this can be used to set a sizelimit.

    NOTE: In previous versions, these options were passed to all Net::LDAP methods. This has changed to allow a cleaner connection interface. If you still require this behavior, create a class inheriting from Catalyst::Model::LDAP::Connection that overrides the specific methods and set connection_class.

  • connection_class

    (Optional) The class or package name that wraps Net::LDAP. Defaults to Catalyst::Model::LDAP::Connection.

    See also "OVERRIDING METHODS" in Catalyst::Model::LDAP::Connection.

  • entry_class

    (Optional) The class or package name to rebless Net::LDAP::Entry objects as. Defaults to Catalyst::Model::LDAP::Entry.

    See also "ADDING ENTRY METHODS" in Catalyst::Model::LDAP::Entry.



Bind the client using the current configuration and return it. This method is automatically called when you use e.g. $c->model('LDAP').

See "bind" in Catalyst::Model::LDAP::Connection for information on how the bind operation is done.



  • Daniel Westermann-Clark <>

  • Adam Jacob <> (TLS support)

  • Marcus Ramberg (paging support and entry AUTOLOAD)

  • Gavin Henry <> (authz and raw support, plus bug fixes)


  • Salih Gonullu, for initial work on Catalyst mailing list


This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Gavin Henry <>


This software is copyright (c) 2017 by Gavin Henry.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.