---
name: "LWP::Protocol::ldap"
section: "3pm"
platform: "linux"
package: "perl-ldap"
version: "0.68-8"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/LWP::Protocol::ldap"
---

# LWP::Protocol::ldap(3pm)

Provide LDAP support for LWP::UserAgent

## NAME

LWP::Protocol::ldap - Provide LDAP support for LWP::UserAgent

## SYNOPSIS

```
  use LWP::UserAgent;
  $ua = LWP::UserAgent->new();
  $res = $ua->get('ldap://ldap.example.com/' .
                  'o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)',
                   Accept => 'text/json'):
```

## DESCRIPTION

The LWP::Protocol::ldap module provides support for using *ldap* schemed URLs following RFC 4516 with LWP.  This module is a plug-in to the LWP protocol handling, so you don't use it directly.

In addition to being used with LDAP URIs, LWP::Protocol::ldap also acts as the base class for its sibling modules LWP::Protocol::ldaps and LWP::Protocol::ldapi.

### Features

*HTTP methods supported*

LWP::Protocol::ldap implements the HTTP *GET* and *HEAD* methods. They are mapped to the LDAP search operation,

*Response format*

Depending on the HTTP *Accept* header provided by the user agent, LWP::Protocol::ldap can answer the requests in one of the following formats:

- DSML

  When the HTTP *Accept* header contains the `"text/dsml"` MIME type, the response is sent as DSMLv1.

- JSON

  When the HTTP *Accept* header contains the `"text/json"` MIME type, the response is sent as JSON. For this to work the *JSON* Perl module needs to be installed.

- LDIF

  When the HTTP *Accept* header contains the `"text/ldif"` MIME type, the response is sent in LDIFv1 format.

- HTML

  In case no HTTP *Accept* header has been sent or none of the above MIME types can be detected, and the *x-format* extension has not been provided either, the response is sent using HTML markup in a 2-column table format (roughly modeled on LDIF).

As an alternative to sending an HTTP *Accept* header, LWP::Protocol::ldap also accepts the `"x-format"` extension

Example:

```
 ldap://ldap.example.com/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)?x-format=dsml
```

*TLS support*

For *ldap* and *ldapi* URIs, the module implements the `"x-tls"` extension that switches the LDAP connection to TLS using a call of the start\_tls method.

Example:

```
 ldap://ldap.example.com/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)?x-tls=1
```

Note: In the above example, ideally giving `"x-tls"` should be sufficient, but unfortunately the parser in URI::ldap has a little flaw.

*Authorization*

Usually the connection is done anonymously, but if the HTTP *Authorization* header is provided with credentials for HTTP Basic authorization, the credentials given in that header will be used to do a simple bind to the LDAP server.

## SEE ALSO

LWP::Protocol::ldaps, LWP::Protocol::ldapi

## COPYRIGHT

Copyright (c) 1998-2004 Graham Barr, 2012 Peter Marschall. All rights reserved.  This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
