Skip to content

Instantly share code, notes, and snippets.

@danielflira
Created October 31, 2019 20:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielflira/e95c06441c9916c8afada0c9c65f4fc2 to your computer and use it in GitHub Desktop.
Save danielflira/e95c06441c9916c8afada0c9c65f4fc2 to your computer and use it in GitHub Desktop.
exemplo autenticação com ldap
// Para usar npm i ldap e executar assim:
// $ USER="usuario@dominio" PASS=`get_senha` index.js
const ldap = require("ldap");
let SERVER = process.env.SERVER || "ldap://10.171.59.13:3268";
let USER = process.env.USER;
let PASS = process.env.PASS;
let LOGIN = process.env.LOGIN;
let PASSW = process.env.PASSW;
if (!USER) {
console.log("voce deve informar a variavel USER");
process.exit(1);
}
if (!PASS) {
console.log("voce deve informar a variavel PASS");
process.exit(1);
}
if (!LOGIN) {
console.log("voce deve informar o LOGIN");
process.exit(1);
}
if (!PASSW) {
console.log("code deve informar o PASSW");
process.exit(1);
}
console.log(`Conectando em ${SERVER}\n`);
let client = ldap.createClient({
url: SERVER
});
client.bind(USER, PASS, function(err) {
if (err) {
console.log(`erro ao fazer o bind ${err}`);
process.exit(1)
}
client.search("dc=sp01,dc=local", {
filter: `(&(objectClass=person)(sAMAccountName=${LOGIN})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))`,
scope: "sub"
}, function(err, res){
if (err) {
console.log(`erro ao efetuar as busca ${err}`);
process.exit(1);
}
res.on('searchEntry', function(entry) {
//console.log('entry: ' + JSON.stringify(entry.object));
console.log(`DN: ${entry.object.dn}`);
console.log(`name: ${entry.object.name}`);
console.log(`mail: ${entry.object.mail}`);
console.log();
client.bind(entry.object.dn, PASSW, (err) => {
if (err) {
console.log("Nao foi possivel fazer o login");
process.exit(1);
} else {
console.log(`${LOGIN} autenticado com sucesso`);
process.exit(0);
}
});
});
/*res.on('searchReference', function(referral) {
console.log('referral: ' + referral.uris.join());
});*/
res.on('error', function(err) {
console.error('error: ' + err.message);
});
/*res.on('end', function(result) {
console.log('status: ' + result.status);
});*/
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment