# ldap

> The ldap identity: Lightweight Directory Access Protocol. Every field and what is required.

`ldap` is the Lightweight Directory Access Protocol (RFC 4511). The target is `host:port` (default 389). The step sends and receives raw bytes as hex, and the session persists across steps, so a solution can stage an exchange and continue it.

## Write it in English

A step reads as sentences, the same byte-session forms as [tcp](/docs/solution/identity/tcp/): `send hex "<hex>"` (or `send hex of "<text>"`), `receive <n> bytes`, `receive until "<hex>"`, `port <n>`, `timeout <n> seconds`, `close the connection`, and `expect ...`.

## Fields

`ldap` uses the byte-session fields from [tcp](/docs/solution/identity/tcp/):

| field | required | what it does |
| --- | --- | --- |
| `send` | yes | the bytes to send, as hex or `hex "text"`; empty when a step only reads |
| `recv` | | how many bytes to read at most |
| `recv_until` | | stop reading once this hex marker appears |
| `timeout` | | how long to wait, in seconds |
| `close` | | end the session after this step |
| `capture` | | pull a value out of the received hex for later steps |

## Example

```text
ldap bind
  # send a bind request and look for the response
  send hex "30260d02010263051a0100..."
  recv 4096
  expect "610c" in the response
```