SSO with Firebase

cookie-parser를 사용하고 계신가요?

쿠키 대신 리디렉션 사용

여러분, 조언해 주셔서 감사합니다. 서버가 다른 도메인에 있고 Safari가 서드파티 쿠키와 전쟁을 벌이고 있어서 쿠키 방식에 막혀 있었습니다. 리디렉션 방식을 사용한 Stack Overflow Q&A를 작성해 두었으니, 이제 인증이 잘 작동합니다! :stuck_out_tongue_closed_eyes:

firebase 인증을 discourse에 쉽게 통합할 수 있으면 좋겠다는 점도 말씀드리고 싶습니다.

음, 이 작업을 수행하는 정확한 목적은 무엇인가요? 디스코urs 외에 웹앱의 다른 곳에서 Firebase 인증을 사용하지 않는 건가요? 저는 사용하고 있으며, 해당 설정을 건드리고 싶지 않습니다. “local”(Authentication State Persistence  |  Firebase)으로 유지하는 것이 더 좋습니다.

이 경로를 따르는 다른 분들을 위한 몇 가지 참고 사항:

  • Firebase Hosting을 사용하는 경우 쿠키 이름을 "__session"으로 지정하세요. 리라이팅 규칙은 캐싱 목적으로 다른 모든 쿠키를 필터링합니다.
  • 검증되지 않은 이메일을 허용하지 않도록 하기 위해(이는 큰 보안 위험입니다) 위의 관련 코드를 다음과 같은 내용으로 교체해야 합니다.
      auth
        .verifyIdToken(idToken)
        .then(function (decodedClaims) {
          // 이 경우, 사용자가 지난 5분 이내에 로그인했으며
          // 검증된 이메일을 가지고 있는지 강제 적용합니다.
          if (
            decodedClaims.email_verified &&
            new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
          ) {
            return auth.createSessionCookie(idToken, { expiresIn });
          }
          throw new Error("UNAUTHORIZED REQUEST!");
        })
  • Discourse에는 “로그아웃 리다이렉트” 설정이 있습니다. 이 설정을 사용하여 __session 쿠키를 삭제하는 URL을 호출하는 것이 좋습니다(백엔드 API 호출을 통해서만 가능). 이렇게 해야 사용자가 다시 로그인할 때 이전과 동일한 사용자로 자동으로 로그인되지 않습니다.

이 코드를 어디에 구현할 수 있나요?