SSO with Firebase

você está usando cookie-parser?

1 curtida

Usando Redirecionamentos em Vez de Cookies

Olá a todos, obrigado por toda a orientação. Fiquei preso com a abordagem de cookies porque meu servidor está em um domínio diferente e o Safari está em guerra com cookies de terceiros. Escrevi uma pergunta e resposta no Stack Overflow com uma abordagem de redirecionamento, boa autenticação! :stuck_out_tongue_closed_eyes:

Gostaria apenas de dizer que também teria muito interesse em ter uma integração fácil da autenticação do Firebase no Discourse.

Hmm, qual é o propósito de fazer isso exatamente? Você não está usando a autenticação do Firebase em outro lugar em um aplicativo web além do Discourse? Eu estou e não quero mexer nessa configuração, eu preferiria como “local” (Authentication State Persistence  |  Firebase)

Apenas algumas notas para outros que seguirem este caminho:

  • chame seu cookie de “__session” se você usar o Firebase Hosting. As regras de reescrita filtram todos os outros cookies para fins de cache.
  • você vai querer substituir o código relevante acima por algo como isto para não permitir e-mails não validados (grande risco de segurança).
          auth
            .verifyIdToken(idToken)
            .then(function (decodedClaims) {
              // Neste caso, estamos forçando que o usuário tenha feito login nos últimos 5 minutos.
              // e eles têm um e-mail verificado
              if (
                decodedClaims.email_verified &&
                new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
              ) {
                return auth.createSessionCookie(idToken, { expiresIn });
              }
              throw new Error("UNAUTHORIZED REQUEST!");
            })
    
  • há uma configuração de “redirecionamento de logout” no Discourse. Provavelmente você vai querer usá-la para acessar uma URL que limpe o cookie __session (só pode ser feito por meio de uma chamada de API de backend) para que o usuário não seja automaticamente logado como o mesmo usuário de antes quando tentar fazer login novamente.
1 curtida

Onde você pode implementar este código?