SSO with Firebase

¿estás usando cookie-parser?

1 me gusta

Usar redirecciones en lugar de cookies

Hola a todos, gracias por toda la orientación, me quedé atascado con el enfoque de las cookies porque mi servidor está en un dominio diferente y Safari está en guerra con las cookies de terceros. He redactado una pregunta y respuesta en Stack Overflow con un enfoque de redirección, ¡autenticación feliz! :stuck_out_tongue_closed_eyes:

Solo para decir que también estaría muy interesado en tener una integración fácil de la autenticación de Firebase en Discourse.

Hmm, ¿cuál es el propósito de hacer esto exactamente? ¿No estás usando la autenticación de Firebase en otro lugar en una aplicación web aparte de Discourse? Yo sí y no quiero modificar esa configuración, preferiría que fuera “local” (Authentication State Persistence  |  Firebase)

Solo algunas notas para otros que sigan este camino:

  • llame a su cookie “__session” si usa Firebase Hosting. Las reglas de reescritura filtran todas las demás cookies para fines de almacenamiento en caché.
  • desea reemplazar el código relevante anterior con algo como esto para no permitir correos electrónicos no validados (gran riesgo de seguridad).
      auth
        .verifyIdToken(idToken)
        .then(function (decodedClaims) {
          // En este caso, estamos exigiendo que el usuario haya iniciado sesión en los últimos 5 minutos.
          // y tienen un correo electrónico verificado
          if (
            decodedClaims.email_verified &&
            new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
          ) {
            return auth.createSessionCookie(idToken, { expiresIn });
          }
          throw new Error("¡SOLICITUD NO AUTORIZADA!");
        })
  • hay una configuración de “redirección de cierre de sesión” en Discourse. Probablemente querrá usar esto para acceder a una URL que borre la cookie __session (solo se puede hacer a través de una llamada a la API del backend) para que el usuario no inicie sesión automáticamente como el mismo usuario anterior cuando intente iniciar sesión nuevamente.
1 me gusta

¿Dónde puedes implementar este código?