Authen...::LDAP(3pm)

πŸ“¦
version 0.3 Β· 2 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

πŸ’– Authen::Simple::LDAP πŸ’–

okay bestie, listen up β€” this is a Perl man page (3pm, so it's a module doc, iykyk) from the User Contributed Perl Documentation collection. Her whole entire job? Simple LDAP authentication. That's it, that's the vibe. Let's get into it. πŸŽ€


✨ NAME ✨

Authen::Simple::LDAP β€” literally just simple LDAP authentication, no cap. πŸ¦‹


🌸 SYNOPSIS 🌸

Use it like a normal module:

use Authen::Simple::LDAP;

my $ldap = Authen::Simple::LDAP->new(
    host    => 'ldap.company.com',
    basedn  => 'ou=People,dc=company,dc=net'
);

if ( $ldap->authenticate( $username, $password ) ) {
    # successfull authentication
}

# or as a mod_perl Authen handler

PerlModule Authen::Simple::Apache
PerlModule Authen::Simple::LDAP

PerlSetVar AuthenSimpleLDAP_host   "ldap.company.com"
PerlSetVar AuthenSimpleLDAP_basedn "ou=People,dc=company,dc=net"

<Location /protected>
  PerlAuthenHandler Authen::Simple::LDAP
  AuthType          Basic
  AuthName          "Protected Area"
  Require           valid-user
</Location>

two whole flavours, bestie β€” plain Perl object, or gluing yourself into Apache as a mod_perl Authen handler. pick your fighter. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

Authenticate against a LDAP service. That's the whole thing. That's the plot. πŸŽ€


πŸ‘‘ METHODS πŸ‘‘

🌟 new

This method takes a hash of parameters. The following options are valid:

  • host β€” the connection host, and honestly she's flexible: it can be a hostname, an IP number, or a URI. Defaults to "localhost". 🌈
host => ldap.company.com
host => 10.0.0.1
host => ldap://ldap.company.com:389
host => ldaps://ldap.company.com
  • port β€” the connection port, defaults to 389. May be overridden by host if host is a URI. so like, don't fight over it, host wins. πŸ™ˆ
port => 389
  • timeout β€” connection timeout, defaults to 60. ⏳
timeout => 60
  • version β€” the LDAP version to use, defaults to 3. ✨
version => 3
  • binddn β€” the distinguished name to bind to the server with. Defaults to bind anonymously. 🫢
binddn => 'uid=proxy,cn=users,dc=company,dc=com'
  • bindpw β€” the credentials to bind with. πŸ”
bindpw => 'secret'
  • basedn β€” the distinguished name of the search base. 🌳
basedn => 'cn=users,dc=company,dc=com'
  • filter β€” the LDAP filter to use in search, defaults to "(uid=%s)". πŸ”
filter => '(uid=%s)'
  • scope β€” the search scope. Can be "base", "one" or "sub", defaults to "sub". 🎯
filter => 'sub'
  • log β€” any object that supports "debug", "info", "error" and "warn". πŸ“
log => Log::Log4perl->get_logger('Authen::Simple::LDAP')

🌟 authenticate( $username, $password )

Returns true on success and false on failure. short king of a method, honestly. πŸ’–


πŸ’œ EXAMPLE USAGE πŸ’œ

🍎 Apple Open Directory

my $ldap = Authen::Simple::LDAP->new(
    host    => 'od.company.com',
    basedn  => 'cn=users,dc=company,dc=com',
    filter  => '(&(objectClass=inetOrgPerson)(objectClass=posixAccount)(uid=%s))'
);

πŸͺŸ Microsoft Active Directory

my $ldap = Authen::Simple::LDAP->new(
    host    => 'ad.company.com',
    binddn  => 'proxyuser@company.com',
    bindpw  => 'secret',
    basedn  => 'cn=users,dc=company,dc=com',
    filter  => '(&(objectClass=organizationalPerson)(objectClass=user)(sAMAccountName=%s))'
);
⚠️ Active Directory by default does not allow anonymous binds. It's recommended that a proxy user is used that has sufficient rights to search the desired tree and attributes. ngl bestie, don't skip this one. 🫑

πŸ”₯ SEE ALSO πŸ”₯

  • Authen::Simple::ActiveDirectory.
  • Authen::Simple.
  • Net::LDAP.

go read those too, they're the extended universe. πŸ“š


🌈 AUTHOR 🌈

Christian Hansen "chansen@cpan.org" β€” the icon who wrote this. bow. πŸ‘‘


This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. fr fr, free as in go wild. πŸ¦‹


okay that's the whole page bestie!! this was perl v5.32.0, dated 2021-01-04, from Authen...::LDAP(3pm). stay authenticated, stay iconic, mwah πŸ’…πŸ’–βœ¨

πŸ“¦ where this page comes from