redb.Route.Ldap
4.2.2
Prefix Reserved
See the version list below for details.
dotnet add package redb.Route.Ldap --version 4.2.2
NuGet\Install-Package redb.Route.Ldap -Version 4.2.2
<PackageReference Include="redb.Route.Ldap" Version="4.2.2" />
<PackageVersion Include="redb.Route.Ldap" Version="4.2.2" />
<PackageReference Include="redb.Route.Ldap" />
paket add redb.Route.Ldap --version 4.2.2
#r "nuget: redb.Route.Ldap, 4.2.2"
#:package redb.Route.Ldap@4.2.2
#addin nuget:?package=redb.Route.Ldap&version=4.2.2
#tool nuget:?package=redb.Route.Ldap&version=4.2.2
redb.Route.Ldap
LDAP / Active Directory connector for redb.Route. Search, CRUD, authentication, and change tracking — all directory operations as endpoints via Novell.Directory.Ldap.NETStandard.
Installation
dotnet add package redb.Route.Ldap
Usage
URI Format
ldap:OPERATION:baseDn?server=host&port=389&bindDn=cn=admin,dc=example,dc=com&bindPassword=secret
Fluent DSL
using redb.Route.Ldap;
// Search users
From(Ldap.Search("ou=users,dc=example,dc=com")
.Server("ldap.example.com")
.BindDn("cn=admin,dc=example,dc=com")
.BindPassword("secret")
.Filter("(objectClass=inetOrgPerson)")
.Scope(LdapSearchScope.Subtree)
.Attributes("cn", "mail", "uid")
.PageSize(500))
.Log("Found: ${header['redbLdap.ResultCount']} entries")
.To("direct://process");
// Watch for changes (consumer — polls for modifications)
From(Ldap.Watch("ou=users,dc=example,dc=com")
.Server("ldap.example.com")
.BindDn("cn=admin,dc=example,dc=com")
.BindPassword("secret")
.ChangeTracking(LdapChangeTrackingMode.ModifyTimestamp)
.PollInterval(5000)
.InitialLoad())
.Log("Changed entry: ${body}")
.To("direct://sync");
// Add entry
From("direct://create-user")
.To(Ldap.Add("ou=users,dc=example,dc=com")
.Server("ldap.example.com")
.BindDn("cn=admin,dc=example,dc=com")
.BindPassword("secret"));
// Modify entry
From("direct://update-user")
.To(Ldap.Modify("cn=alice,ou=users,dc=example,dc=com")
.Server("ldap.example.com")
.BindDn("cn=admin,dc=example,dc=com")
.BindPassword("secret"));
// Bind (authentication check)
From("direct://authenticate")
.To(Ldap.Bind("dc=example,dc=com")
.Server("ldap.example.com"));
Fluent Builder API
| Category | Methods |
|---|---|
| Operations | Ldap.Search(), Ldap.Compare(), Ldap.Add(), Ldap.Modify(), Ldap.Delete(), Ldap.Rename(), Ldap.Bind(), Ldap.Watch() |
| Connection | .Server(), .Port(), .Ssl(), .StartTls(), .ConnectionFactory(), .ConnectTimeout(), .OperationTimeout() |
| Auth | .BindDn(), .BindPassword() |
| Search | .Filter(), .Scope(), .Attributes(), .PageSize(), .SizeLimit(), .TimeLimit() |
| Consumer | .PollInterval(), .ChangeTracking(), .InitialLoad() |
| Protocol | .ProtocolVersion(), .Referrals() |
| Pool | .MaxConnections() |
| TLS | .TrustAllCertificates(), .ClientCert() |
Most builder methods accept both constant values and
IExpressionfor runtime resolution via the expression engine.
Exchange Headers
| Header | Description |
|---|---|
redbLdap.Operation |
Operation type (Search, Add, etc.) |
redbLdap.BaseDn |
Base DN used in the operation |
redbLdap.Filter |
LDAP filter applied |
redbLdap.Scope |
Search scope (Base, OneLevel, Subtree) |
redbLdap.ResultCount |
Number of entries returned |
redbLdap.SearchTime |
Search duration in milliseconds |
redbLdap.Server |
Target LDAP server |
redbLdap.Port |
Target port |
redbLdap.Ssl |
Whether SSL/TLS was used |
redbLdap.ChangeType |
Change type for Watch consumer |
Change Tracking Modes
| Mode | Description |
|---|---|
ModifyTimestamp |
Polls using modifyTimestamp attribute (standard LDAP) |
Usn |
Polls using uSNChanged attribute (Active Directory) |
Persistent |
Persistent search control (if supported by server) |
Docker (for testing)
services:
openldap:
image: osixia/openldap:1.5.0
ports:
- "389:389"
- "636:636"
environment:
LDAP_ORGANISATION: "redb"
LDAP_DOMAIN: "redb.test"
LDAP_ADMIN_PASSWORD: "admin"
Part of
redb.Route — ESB & EIP Framework for .NET
Named connection factory
Keep credentials out of the route URI: register a factory in the context registry and reference it by name. A set-but-unknown name fails loud at startup — a typo can never silently fall back to inline URI parameters.
context.AddToRegistry("prod", new LdapConnectionFactory
{
Server = "dc01.corp.local",
BindDn = "CN=svc,OU=Service,DC=corp,DC=local",
BindPassword = secrets.LdapPassword,
});
// ldap:SEARCH:dc=corp,dc=local?connectionFactory=prod
Tracing
On the redb.Route activity source (AddSource("redb.Route")), with network.protocol.name = ldap and
redb.route.endpoint:
- Consumer (WATCH). One
Consumerspan,ldap {baseDn} receive, per routed entry. An entry carries no trace context, so the span is a root, never a child of the activity the poll loop inherited from whoever started the routes; a poll that finds nothing opens none. A failed route marks it an error, whether the failure stays on the exchange or escapes the pipeline; our own stop does not. - Producer. One
Clientspan per operation,ldap.{operation}, with theldap.*tags; an error when the operation fails, unless our own token cancelled it. A rejectedBINDis an answer, not a failure: it is onldap.bind_result. RouteEngineOptions.EnableTelemetry = falseopens neither span.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Novell.Directory.Ldap.NETStandard (>= 4.0.0)
- redb.Route (>= 4.2.2)
-
net8.0
- Novell.Directory.Ldap.NETStandard (>= 4.0.0)
- redb.Route (>= 4.2.2)
-
net9.0
- Novell.Directory.Ldap.NETStandard (>= 4.0.0)
- redb.Route (>= 4.2.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on redb.Route.Ldap:
| Package | Downloads |
|---|---|
|
redb.Identity.Ldap
LDAP / Active Directory federation provider for redb.Identity — directory sync + bind-on-login. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.4.1 | 50 | 10/21/2026 |
| 4.3.0 | 123 | 10/14/2026 |
| 4.2.3 | 89 | 10/8/2026 |
| 4.2.2 | 129 | 10/5/2026 |
| 4.2.0 | 140 | 9/30/2026 |
| 4.1.1 | 140 | 9/25/2026 |
| 4.1.0 | 135 | 9/21/2026 |
| 4.0.1 | 133 | 9/18/2026 |
| 4.0.0 | 147 | 9/11/2026 |
| 3.7.2 | 164 | 8/26/2026 |
| 3.7.1 | 161 | 8/26/2026 |
| 3.6.0 | 160 | 8/13/2026 |
| 3.5.1 | 151 | 8/9/2026 |
| 3.5.0 | 154 | 8/6/2026 |
| 3.4.0 | 164 | 7/27/2026 |
| 3.3.3 | 190 | 7/16/2026 |
| 3.3.1 | 277 | 7/10/2026 |
| 3.3.0 | 137 | 7/8/2026 |