Я настроил свою стратегию passport-ldapauth так, как показано ниже:
Я изменил конфиденциальную информацию, но я пытаюсь проверить аутентификацию на сервере LDAP, для которого я жестко закодировал паспорт в usernameField
и passwordField
.
const OPTS = {
server: {
url: "ldaps://ldap:port",
searchBase: "<Search-details>",
searchFilter:
"(&(objectCategory=person)(objectClass=user)(sAMAccountName={0}))",
groupSearchFilter:
"(&(objectCategory=person)(objectClass=user)(memberOf={0}))",
searchAttributes: ["displayName", "sAMAccountName", "mail", "memberOf"]
},
usernameField: "<hardcoded-username>",
passwordField: "<hardcoded-password>",
tlsOptions: {
ca: [fs.readFileSync("LDAP-SSL-CERT")]
}
};
passport.use(
new LdapStrategy(OPTS, (user: any, done: any) => {
return done(null, user);
})
);
В req
я подтвердил, что usernameField
и passwordField
содержат необходимые учетные данные, однако ldapauth по-прежнему возвращает {message: 'Missing credentials'}
, когда я запускаю почтовый запрос через почтальона.
export let postLogin = (req: Request, res: Response, next: NextFunction) => {
passport.serializeUser((user: any, done: any) => {
done(null, user);
});
passport.deserializeUser((user: any, done: any) => {
done(null, user);
});
passport.authenticate(
"ldapauth",
{ session: false },
(err: Error, user: any, info: any) => {
if (err) return next(err);
console.log(err);
console.log(user);
console.log(info);
res.send({ status: "ok" });
}
)(req, res, next);
};