redb.Route.Ldap
4.7.2
Prefix Reserved
dotnet add package redb.Route.Ldap --version 4.7.2
NuGet\Install-Package redb.Route.Ldap -Version 4.7.2
<PackageReference Include="redb.Route.Ldap" Version="4.7.2" />
<PackageVersion Include="redb.Route.Ldap" Version="4.7.2" />
<PackageReference Include="redb.Route.Ldap" />
paket add redb.Route.Ldap --version 4.7.2
#r "nuget: redb.Route.Ldap, 4.7.2"
#:package redb.Route.Ldap@4.7.2
#addin nuget:?package=redb.Route.Ldap&version=4.7.2
#tool nuget:?package=redb.Route.Ldap&version=4.7.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
- JsonPath.Net (>= 2.2.0)
- JsonSchema.Net (>= 7.3.4)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Options (>= 10.0.13)
- Novell.Directory.Ldap.NETStandard (>= 4.0.0)
- redb.Route (>= 4.7.2)
-
net8.0
- JsonPath.Net (>= 2.2.0)
- JsonSchema.Net (>= 7.3.4)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Options (>= 10.0.13)
- Novell.Directory.Ldap.NETStandard (>= 4.0.0)
- redb.Route (>= 4.7.2)
-
net9.0
- JsonPath.Net (>= 2.2.0)
- JsonSchema.Net (>= 7.3.4)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.13)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Options (>= 10.0.13)
- Novell.Directory.Ldap.NETStandard (>= 4.0.0)
- redb.Route (>= 4.7.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.7.2 | 46 | 11/13/2026 |
| 4.7.1 | 69 | 11/11/2026 |
| 4.7.0 | 136 | 11/7/2026 |
| 4.6.2 | 127 | 11/5/2026 |
| 4.6.1 | 130 | 11/4/2026 |
| 4.6.0 | 128 | 11/3/2026 |
| 4.5.1 | 137 | 10/30/2026 |
| 4.5.0 | 132 | 10/29/2026 |
| 4.4.2 | 143 | 10/23/2026 |
| 4.4.1 | 146 | 10/21/2026 |
| 4.3.0 | 142 | 10/14/2026 |
| 4.2.3 | 106 | 10/8/2026 |
| 4.2.2 | 143 | 10/5/2026 |
| 4.2.0 | 149 | 9/30/2026 |
| 4.1.1 | 150 | 9/25/2026 |
| 4.1.0 | 146 | 9/21/2026 |
| 4.0.1 | 143 | 9/18/2026 |
| 4.0.0 | 163 | 9/11/2026 |
| 3.7.2 | 173 | 8/26/2026 |