DiscourseConnect 제공자 관련 질문

DiscourseConnect 제공자를 활성화하려고 하는데 몇 가지 질문이 있습니다:

  1. 이 기능을 활성화한 후에도 여전히 사용자를 impersonate(대리)하고 Discourse 내에서 모든 사용자 관리 컨트롤에 접근할 수 있을까요?

  2. 이미 Discourse에는 있지만 WP에는 없는 사용자들은 어떻게 되나요? 그들의 계정은 영향을 받을까요? 실제로 WP에 존재하지 않으므로 어떤 자격 증명을 사용하여 로그인해야 하나요?

  3. WP에서 가입한 후 다시 Discourse로 리다이렉트되도록, 제 Discourse 웹사이트에 가입 버튼을 추가하는 방법은 무엇인가요?

  4. 이 설정이 활성화된 상태에서도 사용자가 Discourse에서만 가입할 수 있는 방법이 있을까요?

감사합니다!

네, 가능하지만 초대와 같이 사용자 생성과 관련된 항목은 제외됩니다.

같은 주소로 WP에 로그인할 수 있다면 문제없을 것 같습니다. 그렇지 않다면 존재하지 않는 것으로 간주됩니다.

로그인 버튼이 사용자를 WP 사이트로 조용히 이동시킵니다.

아니요.

이 말의 뜻이 무엇인가요?

그래서 방금 이것을 테스트해 보았습니다. Discourse에는 있지만 Wordpress에는 없는 계정을 가져와 로그인해 보았는데, WP에서 다음과 같은 오류가 발생했습니다:


Screenshot 2023-07-01 220024

사용자가 실제로 WP에 존재하지 않으므로 WP 관점에서는 당연한 결과라고 생각합니다.

질문은 이렇습니다: DiscourseConnect 제공자를 활성화하면, 제 WP에 등록되어 있지 않은 기존 Discourse 사용자는 더 이상 로그인할 수 없게 되는 건가요?
이것에 대한 해결책이 있나요?

로그인 버튼을 클릭하면 WP로 이동합니다.

네. 해당 사용자를 WordPress에 생성해야 합니다.

제안하신 내용을 확장하여 설명하는 답변을 찾았습니다:

하지만 현재 Discourse 로그인 자격 증명에 영향을 주지 않고 WP로 가져오는 방법은 무엇인가요?
사용자의 로그인을 재설정하거나 사용자에게 알림을 보내지 않고 매끄러운 전환을 수행할 수 있는 방법이 있나요?

그렇게 보기는 어렵습니다. 워드프레스에서 이관된 비밀번호를 사용할 수 있게 해주는 Discourse 플러그인은 있지만, 그 반대 방향으로 작동하는 플러그인은 없을 것 같습니다. 결국 모든 사용자에게 비밀번호를 재설정하도록 요청해야 합니다.

워드프레스 로그인 방식을 사용하도록 전환할 때까지, 워드프레스에 어떤 계정이 있는지 여부는 Discourse에 영향을 주지 않습니다.

한 가지 아이디어가 있습니다.

WordPress를 Discourse 클라이언트로 활성화한 후, 다음과 같은 자동화 스크립트를 만들어 본다면 어떨까요?

  1. Discourse에서 사용자 계정을 임의대로 impersonate(대리)하여 자동화가 해당 사용자로 로그인되도록 합니다.

    • WordPress로 이동하여 “Discourse로 로그인” 버튼을 클릭합니다.
  2. Discourse에 존재하는 모든 사용자(약 2,000명)에 대해 반복합니다.

이 아이디어의 핵심은 2단계에서 WP가 동일한 자격 증명으로 Discourse 사용자의 계정을 생성하도록 강제하는 것입니다. 또한, 해당 사용자로 로그인(impersonate)된 상태에서는 비밀번호를 묻지 않고 “Discourse로 로그인” 버튼이 자동으로 작동할 것이라고 가정하고 있습니다.

이 과정을 모든 사용자에게 수행하면 WP 내에 그들의 계정이 생성되고, 그 다음 WP를 Discourse Provider로 전환할 수 있을까요?

이론적으로는 합리적으로 보이는데, 이 방식이 실제로 작동할지 여러분의 피드백을 듣고 싶습니다.

맞습니다. 사용자가 WordPress에 존재하지 않으면 WordPress에 로그인할 수 없습니다.

무엇을 사칭할 필요가 없습니다.

WordPress를 인증 소스로 사용하려면

  • WordPress에 모든 사용자를 생성하세요. WP의 이메일 주소가 Discourse와 일치하는지 확인하세요.
  • Discourse를 DiscourseConnect 호스트로 WP를 사용하도록 전환하세요.

사용자들이 WordPress에서 비밀번호를 재설정하도록 해야 합니다.

WordPress로 인증을 이동하는 것이 어떤 문제를 해결할 것입니까? 이렇게 했을 것을 후회하게 될 것 같습니다.

저희 WP 웹사이트에서 여러 프리미엄 멤버십 과정과 이벤트가 진행되고 있으며, WP와 Discourse 간의 원활한 통합을 원합니다.

이렇게 하면 어떤 단점이 있으며, 왜 이렇게 말씀하시는 건가요…

알겠습니다. 그러면 WordPress에 Discourse 사용자가 있다면, 해당 사용자 모두에게 WordPress 계정이 있어야 합니다. 같은 이메일 주소로 계정을 생성하면 로그인 시 Discourse 사용자와 연결됩니다.

더 이상 드릴 말씀이 없습니다.

Jay가 언급했듯이, 이를 달성하는 가장 좋은 방법은 WordPress 사이트를 Discourse의 SSO 제공자로 설정하는 것입니다. 설정 방법에 대한 자세한 내용은 이 주제를 참고하세요: Configure single sign-on (SSO) with WP Discourse and DiscourseConnect.

WordPress를 DiscourseConnect 제공자로 설정한 후, 아직 WordPress 사이트에 계정이 없는 Discourse 사용자는 Discourse 사이트에 접근하기 전에 WordPress에서 가입해야 합니다. 사용자에게 변경 사항을 알리기 위해 Discourse 사이트에 메시지를 추가해야 합니다. 메시지에서 사용자에게 Discourse에서 사용하는 이메일 주소와 동일한 이메일로 WordPress에 가입하도록 권장하세요. 그러면 WordPress를 통해 Discourse에 다시 로그인할 때 기존 Discourse 계정으로 자동 로그인됩니다.

사용자가 Discourse에서 사용하는 이메일 주소로 WordPress에 등록하지 않으면, WordPress를 통해 Discourse에 다시 로그인할 때 새로운 계정이 생성됩니다. 이 문제는 기존 Discourse 계정을 새 Discourse 계정으로 병합하여 개별적으로 해결할 수 있습니다. 사용자의 Discourse 관리자 페이지에서 이 작업을 수행할 수 있습니다.

참고할 점은, 사용자가 기존 Discourse 계정으로 로그인되는 동작은 이메일 주소가 WordPress 측에서 "유효"로 표시되는 경우에만 작동한다는 것입니다. 기본 WordPress 등록 시스템을 사용하는 경우 문제없이 작동합니다. 그러나 플러그인으로 추가된 커스텀 등록 페이지를 사용하는 경우, 사용자의 이메일 주소가 "유효"로 표시되지 않을 가능성이 높습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다: Configure single sign-on (SSO) with WP Discourse and DiscourseConnect. 이메일 주소를 어떤 방식으로든 검증하지 않고 무작정 받아들이지 않는 것이 매우 중요합니다. 이메일 주소를 검증하지 않으면 기존 계정이 탈취될 위험이 있습니다.

어떻게 알 수 있을까요?

제 가입 페이지입니다: Project Vanlife

테마 때문에 디자인이 다르긴 하지만, 로그인 전용 플러그인은 사용하지 않는다고 알고 있습니다.

기본 WordPress 가입 시스템을 사용하고 있는 것으로 보입니다. 로그인 페이지가 wp-login.php에 위치해 있기 때문에 그렇게 추정합니다. 이 경우 WP Discourse 플러그인은 사용자의 이메일 주소를 인증된 것으로 표시합니다.

이 주제에 대해 또 다른 질문이 있습니다.

Discourse Connect Provider가 설정된 경우에도 Discourse가 여전히 이메일을 보내는 건가요? WP 사용자에게 이메일 알림을 계속 보내는 건가요?

WP 사용자이지만 포럼에 한 번도 접속한 적 없는 경우와, WP 사용자이면서 포럼에 접속하는 경우 각각 어떻게 작동하나요?

네, Discourse는 여전히 이메일을 보내게 됩니다. Discourse Connect를 인증 시스템으로 사용하는 경우에도 Discourse에서 보내는 이메일 알림에는 영향을 주지 않습니다.

WordPress 사이트의 사용자 중 Discourse에 접근한 적이 없는 사용자는 Discourse의 사용자로 간주되지 않습니다. 이러한 사용자는 Discourse에서 이메일 알림을 받지 않습니다. 단, WP Discourse의 “로그인 시 Discourse 사용자 생성 또는 동기화” 설정을 활성화한 경우를 제외합니다:

해당 설정이 활성화되어 있으면, 사용자가 WordPress 사이트에 로그인할 때 자동으로 Discourse 계정이 생성됩니다. 이 경우, 사용자가 WordPress에는 로그인했지만 Discourse 사이트에는 방문한 적이 없다면, Discourse 사이트에서 주간 다이제스트 이메일을 받기 시작합니다.

그래서 방금 이 부분을 테스트해 보았는데, 그렇게 되지 않는 것 같습니다. 수동으로 처리하지 않고도 사용자의 이메일이 확인되었는지 어떻게 확인할 수 있을까요?

또한, 새 사용자가 가입한 후 이메일도 확인되도록 하려면 어떻게 해야 할까요? 현재는 가입 옵션이 없고 로그인만 가능한 wp-login.php로 사용자를 보내고 있습니다.

포럼에 '가입’이라고 적힌 새 버튼을 만들어 WordPress 내부의 사용자 지정 가입 페이지로 보내는 것은 가능합니다. 하지만 이렇게 하면 다음과 같은 문제가 발생합니다:

이 외에도, 가입 후 사용자를 포럼으로 다시 리다이렉트하고 로그인 상태가 유지되도록 확인하고 싶습니다.

저는 또한 사용자의 관점에서 더 쉬울 것이라고 생각하는 다른 접근법을 탐구하고 있으며, 여러분의 의견을 듣고 싶습니다.

만약 모든 Discourse 사용자를 수동으로 내보낸 다음 WordPress에 가져온다면 어떨까요? 이 과정은 다음과 같습니다.

  1. Discourse에 존재하는 각 사용자에게 WordPress 계정을 생성합니다.

  2. 해당 계정을 사용자의 포럼 프로필과 연결합니다.

  3. WP에서 이메일 주소를 인증된 상태로 표시합니다. 이미 Discourse 사용자이므로 인증된 상태라고 가정할 수 있습니다.

  4. 포럼 비밀번호를 재설정하도록 안내하는 이메일을 보냅니다. (1단계에서 비밀번호가 초기화되므로)

이렇게 하면 사용자가 새 계정을 직접 생성할 필요가 없으며, 단순히 비밀번호만 재설정하면 됩니다.

이 과정은 이 글 위에 있는 답변에서 제가 강조한 질문/문제를 해결하지는 않습니다.

Discourse Connect를 활성화한 후 WordPress에서 새 계정을 생성하여 이메일 주소가 인증되고 있는지 확인할 수 있습니다. 이메일이 인증된 경우, 사용자 설정 페이지 하단에 확인 메시지가 표시됩니다. 또한 다음 위치에서 이메일 주소를 수동으로 인증된 상태로 표시할 수도 있습니다:

이메일 주소가 인증되지 않는다고 가정할 때, 사용자가 계정을 생성할 때 이메일 주소가 인증된 것으로 표시되도록 하는 방법은 여기에 있습니다: Configure single sign-on (SSO) with WP Discourse and DiscourseConnect. 사이트가 사용자에게 사이트 접근 전에 클릭해야 하는 링크가 포함된 확인 이메일을 보내는 경우, 이렇게 하는 것이 안전합니다. WordPress 사이트가 이를 수행하지 않는 경우, 사용자가 강좌 중 하나에 등록한 후 이메일 주소가 인증된 것으로 표시되도록 코드를 추가할 수도 있습니다. 이 설정에는 개발자의 도움이 필요할 수 있습니다.

귀하의 사이트에서 두 개의 별도의 로그인 페이지를 확인했습니다:

  • Project Vanlife (가입 페이지로 가는 링크가 없음)
  • Project Vanlife (가입 페이지로 가는 링크가 있지만, 링크를 클릭하면 “not found” 페이지로 이동함)

가장 쉬운 방법은 사이트에서 로그인 페이지가 하나만 있도록 정리하고, 해당 페이지에 사이트 가입 페이지로 가는 유효한 링크가 포함되도록 하는 것입니다. 로그인 양식을 추가하는 플러그인의 설정 페이지를 통해 이를 달성할 수 있다고 추정됩니다. https://projectvanlife.com/login/의 로그인 페이지를 사용하기로 선택하는 경우, WP Discourse 설정의 "Path to your Login Page"에 /login을 추가해야 합니다:

이것은 사용자를 혼란스럽게 할 수 있습니다. 더 쉬운 접근 방식은 사용자가 링크를 클릭하면 Discourse에 자동으로 로그인되도록 구조화된 Discourse 포럼으로 가는 링크를 단순히 추가하는 것입니다. 링크를 만드는 방법에 대한 자세한 내용은 여기에 있습니다: Create a DiscourseConnect login link. DiscourseConnect가 귀하의 사이트에서 활성화되면, 이 링크도 그 방식으로 구성해야 합니다:

이것은 가능합니다. 수행 방법에 대한 몇 가지 세부 사항은 여기에 있습니다: How to import Discourse users to WordPress? - #2 by simon. 제가 보는 주요 문제는 사용자에게는 크게 편리를 제공하지 않으면서도 스스로에게 업무를 추가하게 된다는 것입니다. 저라면, 사용자가 이메일을 받지 않거나 읽지 않을 수 있고, 일부 사용자는 대신 새 계정이 생성된 것에 대해 불만을 가질 수 있다는 점이 우려될 것입니다. 또한, 사용하는 가져오기 플러그인이 첫 로그인 후 비밀번호 변경을 강제하는 기능이 없는 한 잠재적인 보안 문제가 있습니다.

변경 사항에 대한 세부 정보가 포함된 “staff” 카테고리에 배너 주제를 생성하는 것이 훨씬 쉬울 것입니다. 스크린샷의 문구를 조금 개선할 수 있습니다:

변경 사항을 완료한 후, 로그인에 문제가 발생하면 관리자에게 문의하도록 사용자에게 알리도록 배너 주제를 업데이트하십시오.

도움이 될 수 있는 것이 하나 더 생각났습니다. WordPress 사이트를 DiscourseConnect 제공자로 설정할 때까지, 임시로 Discourse 사이트를 _웹사이트_의 DiscourseConnect 제공자로 구성할 수 있습니다. 그렇게 하면 배너 주제에 다음과 같은 내용을 추가할 수 있습니다:

제가 사용한 전체 링크는 다음과 같습니다:

<a href="http://wp-discourse.test/?discourse_sso=1&redirect_to=http://wp-discourse.test/wp-admin/profile.php" target="_blank">(귀하의 웹사이트 이름)에서 계정 생성</a>

이를 클릭하면 WordPress에서 새 계정이 등록되고 사용자가 비밀번호를 설정할 수 있는 WordPress 프로필 페이지로 리다이렉트됩니다. 귀하의 경우, 링크에서 http://wp-discourse.test의 두 가지 사용처를 모두 https://projectvanlife.com/으로 대체해야 합니다.

@simon 이렇게 상세하게 답변해 주셔서 정말 감사합니다! 이 모든 정보가 매우 도움이 되었습니다!

정말 좋은 아이디어네요!

각 사용자를 impersonate(위장)하여 이 작업을 대신 수행하면 어떻게 될까요? 그렇게 하면 문제가 생길까요?

이 방식은 WordPress에서 Discourse Connect 제공자로 전환한 후에도 사용자의 로그인 비밀번호가 그대로 유지되나요?

문제가 생기지 않을 것 같습니다.

WordPress를 DiscourseConnect 제공자로 설정해도 사용자의 WordPress 비밀번호는 변경되지 않습니다.