Небезопасный вход в Facebook заблокирован на сервере с включенным https - PullRequest
0 голосов
/ 27 августа 2018

У меня есть приложение Node / Express, работающее на сервере с включенным https, но при попытке войти через Facebook с использованием стратегии Passport Facebook я получаю эту ошибку:

Небезопасный вход в систему заблокирован: вы не можете получить токен доступа или войти в это приложение с небезопасной страницы. Попробуйте перезагрузить страницу как https://

Я понимаю, что Facebook требует аутентификации, но на моем сервере она уже есть. Сертификат получен от LetsEncrypt, и поскольку я использую управляемый сервер, у меня нет доступа к файлам сертификата. Мое приложение Express инициализируется нормально.

const app = express();
const cors = require("cors");
app.use(cors({ origin: true, credentials: true }));

Исходный запрос поступил от моего интерфейса, работающего на другом сервере, также с SSL от LetsEncrypt.

Таким образом, мой интерфейс вызывает конечную точку Express, которая обрабатывает ее в Passport:

  app.get(
    "/api/auth/facebook",
    storeRedirectToInSession,
    passport.authenticate("facebook", { scope: ["public_profile", "email"] })
  );

И тогда возникает ошибка. Мое исследование показало, что включение «доверенного прокси» в Express должно исправить это, но это не так. Если я проверяю req.secure, то всегда ложно.

Мне действительно нужен доступ к файлам сертификатов? Любая помощь приветствуется.

Спасибо

1 Ответ

0 голосов
/ 28 августа 2018

Люди будущего, я не смог бы решить эту проблему, фактически не получив доступ к файлам сертификатов в моем приложении Node / Express. У меня была поддержка создания символических ссылок на ключ letsencrypt и файлы сертификатов, а затем я создал сервер https express следующим образом:

https
  .createServer(
    {
      key: fs.readFileSync(keys.SSL_KEY_FILE),
      cert: fs.readFileSync(keys.SSL_CERT_FILE),
    },
    app
  )
  .listen(port, function() {
    console.log("ackend server listening on port ", port);
  });
...