При попытке настроить passport-ldapauth и проверки аутентификации я получаю следующую ошибку:
lde_message: "000004DC: LdapErr: DSID-0C0907C2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580"
Я предполагаю, что это потому, что анонимное связывание не разрешено, и я предоставил учетные данные учетной записи администратора для passport- Опции ldapauth ...
/* /src/app.ts */
import * as express from "express";
import * as bodyParser from 'body-parser';
import * as session from 'express-session';
import * as helmet from 'helmet';
import * as path from 'path';
import * as uuid from 'uuid/v4';
import * as passport from 'passport';
import * as ldapAuthStrategy from 'passport-ldapauth'
const OPTS: ldapAuthStrategy.Options = {
server: {
url: process.env.AUTH_LDAP_URL,
bindDN: process.env.AUTH_LDAP_BIND_USER_DN,
bindCredentials: process.env.AUTH_LDAP_BIND_PASS,
searchBase: "DC=example,DC=com,DC=us",
searchFilter: "(sAMAccountName={{username}})"
}
}
passport.use(new ldapAuthStrategy(OPTS));
Мой env-файл выглядит примерно так ...
AUTH_LDAP_URL='ldap://X.X.X.X:389'
AUTH_LDAP_BIND_USER_DN='cn=Administrator,dc=example,dc=com,dc=us'
AUTH_LDAP_BIND_PASSWORD='PASSWORD'
На маршруте я попросил аутентификацию, вот где ошибка испущено ...
/* /src/routes/login/index.ts */
import * as express from 'express';
import * as passport from 'passport';
const Router = express.Router();
Router.get('/AD/', (req, res)=>{
res.render('login/login', {req: req, title: 'Login'});
}).post('/AD/go', (req: express.Request, res: express.Response, next: express.NextFunction): void | Response => {
passport.authenticate('ldapauth', (err, user, info): void => {
var error = err || info
if (error){
res.status(500).json({ status: 500, data: error })
}else if (!user){
res.status(401).json({ status: 404, data: "User Not Found" })
}else{
res.status(500).json({ status: 200, data: user })
}
})(req, res, next)
});
module.exports = Router;
Последние 7 часов я провел, читая документы и пытаясь найти примеры в Интернете, чтобы пролить свет на эту проблему. Некоторые значения были изменены для редактирования данных. Заранее спасибо.
РЕДАКТИРОВАТЬ: Это работает, если я использую ldapsearch (снова, отредактировано)
ldapsearch -b "dc=example,dc=com,dc=us" -H ldap://X.X.X.X:389 -x -D "cn=Administrator,dc=example,dc=com,dc=us" -W '(sAMAccountName=testuser)'
...
# search result
search: 2
result: 0 Success