Latest에서 LDAP로 로그인할 수 없습니다

여러분 안녕하세요,

이 문제로 여기까지 귀찮게 해서 죄송합니다. 최근에 저희 Discourse 설치를 최신 버전으로 업데이트했는데, LDAP 플러그인(GitHub - jonmbake/discourse-ldap-auth: Discourse plugin to enable LDAP/Active Directory authentication. · GitHub)을 사용하고 있습니다. 그런데 현재 사용자들의 로그인이 되지 않습니다.

세션을 유지하고 있었다면 아무런 문제가 없었을 것입니다. 하지만 지금 로그인을 시도하면 “Log In” 버튼을 클릭할 때 URL이 /auth/failure?message=csrf_detected로 변경되고, Authorization timed out, or you have switched browsers. Please try again.라는 오류 메시지가 표시됩니다.

이러한 상황을 초래할 수 있는 최근 변경 사항이 있는지 아시는 분이 있을까요?

감사합니다.

@david에게 조언을 구할 수 있을까요?

부수적으로 질문이 하나 있는데, 이전 버전으로 롤백할 수 있는 방법이 있을까요? 여기저기 찾아봤는데, 합의된 방법은 플러그인(또는 문제가 된 특정 플러그인)을 비활성화하는 거라고 합니다. 하지만 이 플러그인은 비활성화할 수가 없는데, 사용자가 플랫폼에 로그인하는 방식이 바로 이 플러그인이라서요 :stuck_out_tongue:

공식적으로 지원되지는 않지만, 백업이 있다면 postgres 데이터 디렉토리를 삭제하고 app.yml의 버전 줄에 커밋을 추가한 뒤, 다시 빌드하고 백업을 복원할 수 있습니다.

네, 백업으로 돌아가서 SHA를 기준으로 버전을 다시 구축하고 있습니다. 기존 버전이 불안정하게 작동하고 있어서요.

그리고 한편으로는 최신 안정판도 실행해 보며 어떻게든 해결할 수 있는지 확인 중입니다.

@codinghorror의 제안대로 @david에게 조언을 구할 수 있을지 모르겠지만, 사용자 기반이 잠겨 있는 상태(세션을 유지한 경우 제외)라 뭐든 시도해 볼 의향이 있습니다.

간단한 업데이트: 업그레이드 시점(업그레이드 전)의 머신 스냅샷을 사용하여 백업 버전을 사용해 보았습니다. "로그인"을 클릭하면 메인 페이지가 두 번 다시 로드될 뿐입니다. 당시 사용했던 정확한 커밋 SHA로 재구축을 시도해 보았지만, DB Rake 오류가 발생하여 실패했습니다. :no_mouth:

LDAP 관련 다른 보고서를 찾아보았지만, 관련 내용이 없는 것 같습니다. 외부 소스에 의해 발생할 수 있을까요?

마지막 업데이트:

문제가 해결되었습니다. 근본 원인을 찾았는데, Discourse와 관련된 문제가 아니었습니다(죄송합니다!). 문제는 인증서가 업데이트되어 HAP를 통해 제공되고 있었는데, 이전에는 HAP를 사용하지 않고 Discourse가 직접 제공하던 상황에서 이 세부 사항을 놓쳤기 때문에 CORS 오류가 발생했던 것입니다.

배운 교훈:

  • Discourse를 롤백하는 것은 불가능합니다. 전체 머신에 대한 백업을 갖추는 것이 좋습니다(다행히 백업이 되어 있었습니다).
  • 여기서 읽은 지침에 따라 특정 SHA로 재구축하는 것이 왜 그렇게 어려웠는지 아직까지도 알 수 없습니다. 제 경우엔 성공하지 못했습니다.
  • 인증서는 항상 HAP에서 제공하는 것이 좋지만, 이 사실을 잊지 마세요. (다른 분들을 위한 참고 사항으로, Discourse에는 자체 NGINX가 있기 때문에 'set-header X-Forwarded-Proto https' 플래그를 추가해야 합니다. 바로 이 부분에서 실패가 발생했습니다.)
  • 동일한 문제를 보고한 사람이 한 명도 없었다는 사실(이 플러그인이 공식 플러그인이 아니라는 점을 고려하면 코너 케이스이긴 하지만)이 그 방향으로의 추측을 뒷받침했습니다(커뮤니티가 의도한 대로 작동했네요 :P)
  • 업데이트로 인해 트리거된 재구축 과정에서 실패가 발생했기 때문에, 문제가 늦게까지 드러나지 않았습니다(인증서 변경을 기억조차 못 할 정도로요).

다시 한번 감사드리고, 혼란을 드려 죄송합니다!