OIDC 플러그인이 갑자기 깨져서 신규 사용자는 조용히 실패합니다

우리는 현재 실행 중인 Discourse 인스턴스에서 기존 계정이 없는 사용자의 로그인(회원가입)이 중단된 문제를 겪고 있으며, 원인을 파악하지 못해 난감한 상황입니다! 이 문제는 약 2주 전 Discourse AI 플러그인을 설치하고 인스턴스를 재시작한 후 시작되었습니다. 지난 며칠 동안 고객 불만이 접수되어서야 이 문제를 인지하게 되었습니다. 평소에는 매일 충분한 수의 신규 가입이 이루어지고 있습니다.

환경 설정

  • 공식 도커를 통한 자체 호스팅 Discourse
  • https://community.enginedj.com
  • 자체 OIDC 제공자를 사용하는 OIDC 플러그인 (:camera_flash: 1)
  • OIDC를 제외한 다른 인증 방식 없음 (즉, 이메일 + 비밀번호 등록 불가) (:camera_flash: 2)
  • 마지막 성공적인 신규 가입: 2023년 11월 22일 오전 5:23 (NZDT)
  • AI 플러그인 설치 시점: 2023년 11월 22일 오전 6:03경 (NZDT) (이로 인해 Discourse 인스턴스가 재부팅되었을 것입니다)
  • 10월 이후 시스템 설정 변경에 대한 이벤트 로그가 없으며, 3월 이후 인증과 관련된 관련 로그도 없습니다 (:camera_flash: 3)
  • 포럼 활동은 활발하며, 디스크 공간/DB 등의 문제는 없습니다.

문제 증상

  • 로그인 플로우 자체는 정상적으로 작동하지만, 기존 계정이 없는 사용자가 돌아와도 로그인되지 않습니다.
  • 오류 메시지가 표시되지 않습니다.
  • 로그에 오류 메시지가 없습니다. (로그에 일부 CSRF 오류가 있지만, 이는 로그인 실패와 상관관계가 없습니다)
  • OIDC 플러그인의 상세 로그를 확인한 결과, OIDC 제공자로부터 데이터를 올바르게 조회하고 클레임 등을 가져오며 문제가 없는 것으로 나타납니다 (:camera_flash: 4)

시도해 본 조치

  • Discourse AI 플러그인 비활성화
  • Discourse AI 플러그인 제거
  • 쿠키 응답의 도메인 불일치 여부 확인
  • 모든 플러그인/컴포넌트를 최신 버전으로 업데이트 (:camera_flash: 5)
  • 설정이 조정되지 않았는지 확인
  • 호스트 로그 조사. 특이사항 없음.

문제 상황을 보여주는 영상입니다. 첫 번째 로그인은 기존 Discourse 계정이 없는 사용자의 것이고, 두 번째는 제 관리자 계정입니다.

https://www.loom.com/share/3aad210d844849dc8154ce6e5db50d29

다음으로 무엇을 확인해야 할지 아이디어가 있을까요?

:camera_flash: 1

:camera_flash: 2

:camera_flash: 3

:camera_flash: 4

:camera_flash: 5

안녕하세요 @snikch :wave:

사이트에서 로그인 과정을 진행하면 자바스크립트 콘솔에 이 오류가 표시됩니다. theme id=12에서 발생하고 있으며, 로그인 버튼에 추가 스타일링을 적용하려다 실패하는 것 같습니다.

브라우저의 개발자 도구를 사용해 해당 테마의 js를 '차단’하면 모든 기능이 정상적으로 작동하는 것처럼 보입니다.

따라서 문제를 해결하려면 theme id=12를 비활성화하거나, 문제의 코드를 수정/제거하도록 테마를 편집하면 될 것 같습니다.

그럼에도 불구하고, 이러한 테마 오류가 사이트의 로그인을 완전히 망치지는 않기를 바랍니다! 그래서 여기에서 오류 처리를 개선할 수 있는지 살펴보겠습니다 :eyes: (수정: 개선 PR은 여기에 있습니다)

와, @david 감사합니다. 그 에러를 보고 카드를 만들어서 처리하려고 했었는데, JS가 페이지를 렌더링하기 전에 서버 사이드에서 처리되는 것으로 알고 있어서 사용자 로그인과는 전혀 무관할 거라고 단정 짓고 말았네요. :facepalm: 너무 많은 가정이 있었어요. 이제 계정 생성 모달을 표시하려면 이 값이 필요하다는 걸 알겠네요.

도와주셔서 정말 감사합니다. :heart_eyes_cat: