Node.js + Паспорт - неожиданное перенаправление при использовании Google oauth2 - PullRequest
1 голос
/ 11 апреля 2020

Я создаю node.js сервер с использованием промежуточного программного обеспечения для паспорта. Я пытаюсь аутентифицировать своих пользователей через Google oauth2.

Процесс аутентификации выглядит следующим образом:

  1. Пользователь перенаправляется на <server>/auth/google, который использует промежуточное ПО для паспорта, таким образом : passport.authenticate("google", { scope: ["profile", "email"] })

  2. Затем пользователь получает страницу входа Google и логины

  3. Затем Google перенаправляет пользователя на <server>/auth/google/callback, в котором используется промежуточное ПО для паспорта. таким образом: passport.authenticate("google", { failureRedirect: "/", session: false })

  4. В конце пользователь перенаправляется на <client>?token=<token>

Я размещаю интерфейс моего проекта на Netlify и серверная часть на СЕЙЧАС.

Все работает нормально при работе на localhost, но при работе в рабочей среде на шаге 3 происходит неожиданное перенаправление, при котором пользователь перенаправляется на <server>/auth/google/t?token=<long-token-string> вместо упомянутый путь.

В чем причина этого перенаправления? Есть предложения?

Спасибо, Офек

1 Ответ

0 голосов
/ 11 апреля 2020

После прочтения и отладки passport.js и oauth я наконец-то выяснил, что не так. Это ошибка в моем коде.

Я использовал это в своем конфигурационном файле:

export const CLIENT_ORIGIN =
  process.env.NODE_ENV === "production"
    ? "https://<project-name>.netlify.com"
    : ["http://127.0.0.1:3000", "http://localhost:3000"];

Итак, при работе на localhost, установив callbackURL = CLIENT_ORIGIN[1] в StrategyOptions имел смысл, но при работе в рабочей среде CLIENT_ORIGIN получил значение "https://<project-name>.netlify.com" (строка вместо массива), поэтому CLIENT_ORIGIN[1] вернул символ "t". В результате callbackURL получил значение "t", что привело к непредвиденному (и недокументированному) перенаправлению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...