SSO with Firebase

Вы используете cookie-parser?

Использование редиректов вместо куки

Всем привет, спасибо за все советы! Я застрял на подходе с куки, так как мой сервер находится на другом домене, а Safari ведёт себя враждебно по отношению к сторонним куки. Я написал вопрос и ответ на Stack Overflow с использованием подхода через редирект. Приятной аутентификации! :stuck_out_tongue_closed_eyes:

Хочу лишь сказать, что мне тоже было бы очень интересно получить простую интеграцию аутентификации Firebase в Discourse.

Хм, в чём именно цель этого действия? Вы не используете аутентификацию Firebase в другом месте веб-приложения, кроме Discourse? Я использую и не хочу трогать эту настройку; мне бы хотелось, чтобы она оставалась «локальной» (Authentication State Persistence  |  Firebase)

Несколько заметок для тех, кто пойдёт по этому пути:

  • Назовите ваш куки-файл “__session”, если вы используете Firebase Hosting. Правила переписывания фильтруют все остальные куки для целей кэширования.
  • Вы захотите заменить соответствующий код выше чем-то вроде этого, чтобы не допускать невалидированные электронные адреса (это серьёзный риск для безопасности).
      auth
        .verifyIdToken(idToken)
        .then(function (decodedClaims) {
          // В данном случае мы требуем, чтобы пользователь вошёл в систему в последние 5 минут
          // и у него подтверждённый email
          if (
            decodedClaims.email_verified &&
            new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
          ) {
            return auth.createSessionCookie(idToken, { expiresIn });
          }
          throw new Error("UNAUTHORIZED REQUEST!");
        })
  • В Discourse есть настройка “перенаправление при выходе”. Скорее всего, вы захотите использовать её для обращения к URL, который очищает куки-файл __session (это можно сделать только через вызов API бэкенда), чтобы пользователь не автоматически входил в систему как тот же самый пользователь, когда попытается войти снова.

Где можно реализовать этот код?