From 81bc6cd81b347f178a1a2b85e33b7101d1241c41 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Mon, 05 Oct 2026 12:38:31 +0000
Subject: [PATCH] [#1155] Make the rest2ldap bind templates and HTTP Basic credentials work as documented (#1165)
---
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
index 1cacf95..684eb07 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
@@ -447,7 +447,7 @@
return connectionFactories.get(name);
}
- private ConditionalFilter buildBasicFilter(final JsonValue config) {
+ ConditionalFilter buildBasicFilter(final JsonValue config) {
final String bind = config.get("bind").required().asString();
final BindStrategy strategy = BindStrategy.valueOf(bind.toUpperCase().replace('-', '_'));
return newBasicAuthenticationFilter(buildBindStrategy(strategy, config.get(bind).required()),
@@ -494,14 +494,14 @@
private AuthenticationStrategy buildSimpleBindStrategy(final JsonValue config) {
return newSimpleBindStrategy(getConnectionFactory(config.get("ldapConnectionFactory")
.defaultTo(DEFAULT_BIND_FACTORY).asString()),
- parseUserNameTemplate(config.get("bindDnTemplate").defaultTo("%s")),
+ parseUserNameTemplate(config.get("bindDnTemplate").defaultTo("{username}")),
schema);
}
private AuthenticationStrategy buildSaslBindStrategy(JsonValue config) {
return newSaslPlainStrategy(
getConnectionFactory(config.get("ldapConnectionFactory").defaultTo(DEFAULT_BIND_FACTORY).asString()),
- schema, parseUserNameTemplate(config.get(AUTHZID_TEMPLATE).defaultTo("u:%s")));
+ schema, parseUserNameTemplate(config.get(AUTHZID_TEMPLATE).defaultTo("u:{username}")));
}
private AuthenticationStrategy buildSearchThenBindStrategy(JsonValue config) {
@@ -516,6 +516,7 @@
}
private String parseUserNameTemplate(final JsonValue template) {
- return template.asString().replace("{username}", "%s");
+ // The strategies format the template with String.format(): keep any other '%' literal.
+ return template.asString().replace("%", "%%").replace("{username}", "%s");
}
}
--
Gitblit v1.10.0