Как исправить ответ «Отсутствующие учетные данные» в passport-ldapauth - PullRequest
0 голосов
/ 24 апреля 2019

Я настроил свою стратегию 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);
      };
...