I'm attempting to connect to an Active Directory domain controller to make some basic LDAP queries using JavaScript. I'm using the LDAPJS library and the built-in node tls module. I'm getting an error when attempting to run client.bind
The TLS connection seems to be working fine (it's coming back as authorized===true
, though on the secureConnect
event, I'm getting undefined.
The related code and output is below:
var tlsOptions = {
host: "my.domain.controller.net",
port: portNumber,
ca: fs.readFileSync("C:\\myCA.pem"),
};
var server = tls.connect(tlsOptions, function () {
console.log(
"Server connected",
server.authorized ? "and authorized" : "but UNAUTHORIZED"
);
if (server.authorized) {
var client = ldap.createClient({
url: "ldaps://domiancontroler",
tlsOptions: tlsOptions,
});
console.log("Client created!")
client.bind(userDN, userPW, function (err) {
console.log("Client binding error:", err)
process.exit()
});
}
});
server.setEncoding("utf8");
server.on("data", function (data) {
console.log("server data callback: ", data);
});
server.on("secureConnect", function (data) {
console.log("server secureConnect callback: ", data);
});
server.on("error", function (error) {
console.log("server error callback", error);
});
Produces the following output:
> Server connected and authorized
> Client created!
> server secureConnect callback: undefined
> Client binding error: null