가능할까요?

안녕하세요, 멤버 여러분!
모두 잘 지내고 계시길 바랍니다.
저는 디스커스(Discourse) 포럼을 하나 구축하고, 제 웹사이트(ASP.NET)와 연결해 보았습니다.
처음에는 Discourse-Connect를 사용했고, 연결은 성공했지만, 이 경우 포럼에서 사용자가 로그인하거나 가입할 수 없는 문제가 발생했습니다.
그래서 Discourse-Api를 사용하여 포럼에 로그인하는 방법을 시도해 보았지만, 아직까지 완료하지 못했습니다.
많은 문서를 읽어 보았지만, 정확한 해결책을 찾지 못했습니다.\n이 문제를 해결해 주시거나, 가능성 및 정확한 해결책을 알려주실 분을 부탁드립니다.
부탁드립니다.

두 가지 옵션이 있습니다:

  • DiscourseConnect를 설정하여 사용자가 웹사이트에 가입하고 로그인하도록 하세요. 사용자가 포럼에 로그인하려고 하면 자동으로 로그인됩니다. 이것이 일반적인 설정입니다. 이렇게 설정하면 모든 가입 및 로그인 처리가 웹사이트에서 이루어집니다. 포럼에서의 사용자명/비밀번호 로그인 및 가입은 비활성화됩니다.

  • DiscourseConnect를 설정하여 사용자가 포럼에 가입하고 로그인하도록 하세요. 사용자가 웹사이트에 로그인하려고 하면 자동으로 로그인됩니다. 이 설정은 Discourse를 DiscourseConnect 제공자(Provider)로 설정하는 것이며, 해당 설정 방법은 여기에서 확인할 수 있습니다.

빠른 답변 감사합니다.
DiscourseConnect 없이도 가능한 방법이 있을까요?

왜 사용하시기를 원하지 않으시나요?

물론 직접 구현하는 것도 가능하지만, 그렇게 하면 DiscourseConnect를 구축하는 데 투입된 수년간의 경험을 모두 버리게 됩니다. 따라서 그 막대한 작업을 감당하기 전에, 이미 제공되고 있는 것을 사용하지 않고 직접 무언가를 구축해야 하는 충분한 이유가 무엇인지 먼저 결정하셔야 합니다.

물론 DiscourseConnect가 훌륭한 기능이라는 것은 알고 있습니다.
하지만 제 목적은 Discourse 포럼에서 로컬 로그인과 회원가입을 하는 것입니다.
그래서 Discourse API를 사용해보려 했습니다.
Discourse API로 이런 것이 가능한가요?
감사합니다.
부탁드립니다.

네, Discourse에서 로컬 로그인과 가입을 원하신다면, 웹사이트와 어떤 형태의 연동을 원하시는지 알려주세요.

제 목표는 다음과 같습니다:

  1. 사용자가 내 사이트에 로그인한 상태에서 포럼에 접속하면, 포럼에도 자동으로 로그인되도록 하는 것.
  2. 사용자가 포럼에서 직접 로그인 및 가입할 수 있도록 하는 것.
  3. 사용자가 포럼에 로그인한 상태에서 내 사이트에 접속하면, 내 사이트에도 자동으로 로그인되도록 하는 것.
    DiscourseConnect를 사용하면 1)과 3)은 가능하지만, 2)는 수행할 수 없습니다.
    하지만 2)는 우리에게 매우 중요합니다.

사용자가 두 곳에서 모두 가입할 수 있게 하면 상황이 금방 엉망이 될 수 있습니다. 따라서 선택을 해야 합니다. 사용자가 웹사이트에서 가입하도록 할지, 아니면 포럼에서 가입하도록 할지 둘 중 하나를 정해야 합니다.

이것이 왜 이렇게 중요한가요?

도와주셔서 감사합니다.
하지만 제 상사가 이 방식을 원합니다.
제 구현을 확인해 주실 수 있을까요?
Discourse API를 다음과 같이 호출해 보았습니다.

  1. GET '/session/csrf’를 호출하여 csrf 토큰과 쿠키를 가져옵니다.
  2. 헤더에 ‘X-CSRF-Token’=‘csrf 토큰’, ‘Cookie’='가져온 쿠키’를 포함하고, 데이터에 login, password, timezone, second-factor-method, authenticity-token를 담아 POST '/session’을 호출합니다.
  3. 헤더에 ‘Cookie’='/session에서 가져온 쿠키’를 포함하고, 데이터에 username, password, redirect를 담아 POST '/login’을 호출합니다.

모든 로그는 Discourse 로그인 워크플로우와 동일합니다.
하지만 discourse 포럼으로 리다이렉트하면 사용자가 로그인되어 있지 않습니다.

이 문제를 어떻게 해결할 수 있을까요? 무엇이 잘못된 것일까요?

다시 한번 도움 주셔서 감사합니다.

P.S. 제 서버는 Ubuntu Nginx 서버입니다.

그렇다면 상사에게 여러 곳에서 사용자가 등록하도록 하는 것은 매우 나쁜 아이디어라는 점을 설명해야 합니다. 상황이 큰 혼란으로 이어질 것입니다. 웹사이트에서는 usernameA로, 포럼에서는 usernameB로, 같은 이메일 주소로 등록했을 때 어떤 일이 일어나는지 설명해 보세요. 또는 사용자가 비밀번호를 웹사이트에서만 변경하거나, Discourse에서만 변경하면 어떻게 될까요? 그러면 시스템이 깨집니다!

지금 구현한 방식은 사용자를 대신하여 서버를 포럼에 로그인시키는 것입니다. 이는 사용자의 세션 쿠키를 설정하지 않으므로, 사용자를 포럼에 로그인시키지 않습니다.

또한, 사용자의 평문 비밀번호를 손에 넣은 것으로 보입니다. 이는 매우 나쁜 아이디어입니다. 비밀번호는 항상 해시(단방향 암호화)로 저장해야 하며, 평문 비밀번호를 저장해서는 안 됩니다. 데이터베이스가 해킹당하면 사용자의 모든 비밀번호가 공격자에게 노출됩니다. 이것도 상사에게 설명할 좋은 이유가 됩니다.

상사를 설득하여 다른 방식으로 진행하도록 할 수 있는 세 가지 좋은 이유를 드렸습니다. 현재 방식은 큰 문제만 초래할 것입니다. 이 방식을 작동하게 만드는 데 도움을 드릴 수 없으며, 실제로도 작동하지 않을 것입니다. 설령 작동하게 된다 해도 단기적으로만 작동할 뿐입니다.

알겠습니다.
이 내용들을 제 상사에게 설명하겠습니다.
감사합니다.
나중에 더 이야기하고 싶습니다(물론 이 주제와는 다른 내용으로요).
감사합니다

한 번만 더 도와주세요.
제 포럼 서버에는 메인 도메인 하나와 여러 서브도메인이 있습니다.
하나의 데이터베이스를 사용하여 각 도메인에 여러 개의 Discourse 포럼을 구축할 수 있을까요?
아래와 같이 구성할 수 있을까요?:

  • 메인 도메인에서는 로컬 로그인과 가입이 가능하도록 설정.
  • 서브도메인에서는 DiscourseConnect를 사용하여 제 사이트들과 연동.
    가능하다면 구축 방법을 안내해 주시고,
    불가능하다면 그 이유를 알려주세요.
    감사합니다.

네, 가능합니다.

  • 이 포럼에서 "multisite"를 검색하세요.
  • 메인 사이트를 DiscourseConnect 제공자(Provider)로 설정하세요.
  • 서브도메인 사이트를 DiscourseConnect 클라이언트(Client)로 설정하세요.