-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauth.js
More file actions
116 lines (100 loc) · 2.5 KB
/
Copy pathauth.js
File metadata and controls
116 lines (100 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.json());
var ldap = require("ldapjs");
var client = ldap.createClient({
url: "ldap://x.x.x.x:389",
});
let user = {
username: "",
password: "",
};
let respuesta = {
error: false,
codigo: 200,
mensaje: "",
};
let UsuarioLdap = "";
/*update the url according to your ldap address*/
/*use this to create connection*/
/*use this to create connection*/
function authenticateDN(username, password) {
return new Promise((resolve, reject) => {
client.bind(username, password, (err) => {
if (err) {
resolve(false);
}
console.log("Success");
resolve(true);
});
});
}
async function buscaUsuario(username) {
return new Promise((resolve, reject) => {
const opts = {
filter: `(cn=${username})`,
scope: "sub",
attributes: ["givenName", "sn", "cn"],
};
client.search("o=sjd", opts, (err, res) => {
res.on("searchRequest", (searchRequest) => {
console.log("searchRequest: ", searchRequest.messageID);
});
res.on("searchEntry", (entry) => {
resolve(entry.object);
});
res.on("searchReference", (referral) => {
console.log("referral: " + referral.uris.join());
});
res.on("error", (err) => {
reject("Error al buscar");
console.error("error: " + err.message);
});
res.on("end", (result) => {
console.log("status: " + result.status);
});
});
});
}
app.post("/prueba", function (req, res) {
console.log(req.body);
console.log(req.body.username);
res.send(req.body);
});
app.post("/validate", function (req, res) {
let resultado = false;
let mensajeout;
async function validar() {
resultado = await authenticateDN(
"cn=" + req.body.username + ",o=sjd",
req.body.password
);
console.log("resultado:" + resultado);
if (resultado) {
mensajeout = await buscaUsuario(req.body.username);
}
console.log("mensaje:" + mensajeout);
if (resultado) {
respuesta = {
error: false,
codigo: 200,
mensaje: { mensajeout },
};
} else {
respuesta = {
error: true,
codigo: 400,
mensaje: "Login erroneo",
};
}
res.send(respuesta);
}
validar();
});
app.get("/hola", function (req, res) {
res.send("Saludos desde Express");
});
app.listen(8000, () => {
console.log("El servidor esta escuchando el puerto 8000");
});