in resources/oidc-provider/account/ldap_auth/index.js [18:60]
async authenticate(email, password) {
Log.debug('authenticate from oidc/account/cognito just got invoked!')
return Promise.resolve()
.then(() => new Promise((resolve, reject) => {
const client = ldap.createClient({
url: this.tenantconfig.ldapurl
})
const opts = {
filter: `(&(cn=${email.split('@')[0]})(objectClass=user))`,
scope: 'sub'
}
client.bind(email, password, err => {
if (err) {
Log.debug(err.message)
client.unbind(error => { if (error) { Log.debug(error.message) } else { Log.debug('ldap client disconnected') } reject(err) })
} else {
Log.debug("Bind successfull, going to search now")
var user
client.search(this.tenantconfig.ldapsuffix, opts, (err, res) => {
res.on('searchEntry', entry => {
user = entry.object
Log.debug('ldap user found', entry.object)
})
res.on('searchReference', referral => {
Log.debug('ldap referral: ' + referral.uris.join());
});
res.on('error', err => {
Log.error('ldap error: ' + err.message);
reject(err)
});
res.on('end', result => {
Log.debug('ldap search ended: ',result);
resolve({sub:user.sAMAccountName ,raw:user})
});
})
}
})
}))
}