재구조화 프로젝트를 진행하면서 우리의 옵션에 대해 더 명확한 이해를 얻으려고 합니다. 포럼을 검색하여 더 많은 통찰력을 얻으려 했으며, 유사한 질문을 찾았지만, 해당 질문자의 시나리오는 우리의 것과 다소 다르므로 새 주제로 이 내용을 올립니다.
현재 domain.com에 있는 WordPress 사이트가 community.domain.com의 Discourse 인스턴스를 위한 SSO 클라이언트로 설정되어 있습니다. 그러나 이 WP 사이트는 멀티사이트 네트워크로 재구성되고 있으며, 예를 들어 sub1.newdomain.com, sub2.newdomain.com 등 각 사이트마다 별도의 Discourse 인스턴스(예: forum.sub1.newdomain.com, 또는 서브폴더 구성을 해결할 수 있다면 이상적으로는 sub1.newdomain.com/forum)가 필요합니다.
우리는 사용자가 모든 커뮤니티에서 단일 신원을 가질 수 있기를 원하며, 하나의 WP 서브사이트에서 등록한 사용자를 네트워크 전체에 동기화하는 방법을 알고 있습니다. 하나의 Discourse 인스턴스가 다른 인스턴스를 위한 SSO 서버로 작동할 수 있다는 것은 이해하고 있지만, 이것이 어떻게 구성되는지 또는 여러 Discourse 클라이언트에 대해 작동하는지 확인을 찾지 못했습니다.
따라서 제 질문은 다음과 같습니다:
설명된 시나리오에서, 예를 들어 auth.newdomain.com에 있는 Discourse 인스턴스를 WPMS 네트워크 및 서브사이트와 연결된 모든 Discourse 인스턴스를 위한 SSO 서버로 구성할 수 있습니까?
이전 질문에 대한 답이 '예’라면, 해당 “서버” 인스턴스를 인증 관련 기능만 제공하도록 구성하는 것이 실현 가능한가요? 즉, 사용자가 어떤 사이트에서 인증을 시도하든 상관없이, 네트워크 전체의 인증 “소스 오브 트루스(source of truth)” 역할만 수행하고 다른 목적은 없도록 하는 것입니다. 아니면 이 시점에서 외부 인증 솔루션에 의존하는 것이 더 적절한가요?
안녕하세요 – 원본 주제를 링크해 주셔서 이 메시지가 뜬 것 같습니다. @simon 님이 의견을 말씀해 주실 테지만, 여러분께 적용될지 여부는 알 수 없으나 (훨씬 더 간단한) 하나의 옵션은 단일 Discourse 인스턴스를 설정하고 그룹을 사용하여 포럼을 분리하는 것입니다. SSO 페이로드에 그룹 정보를 전송할 수 있습니다.
그러나 단일 인스턴스가 SSO를 제공하는 방식으로 여러 포럼을 운영하는 것은 꽤 간단해야 합니다(다만 저는 이전에 시도해 본 적은 없습니다). 절차는 다음과 같을 것입니다:
WP Discourse 플러그인을 추가하고 네트워크 옵션에서 SSO 클라이언트로 구성합니다.
SSO 제공자로 기능하도록 하려는 Discourse 포럼을 설정합니다(WP + Discourse에 시크릿 키 추가 등).
그 후, 추가 포럼을 추가할 때는 SSO 클라이언트로 구성하면 됩니다(WP Discourse가 네트워크 레벨에서 설정되어 있으므로 새 사이트를 추가할 때 설정을 수정할 필요가 없습니다).
멀티사이트 네트워크에서 Discourse를 SSO 제공자로 사용할 수 있습니다. 이는 네트워크 내 모든 사이트의 SSO 제공자로 단일 Discourse 사이트를 설정한 경우에만 활성화됩니다. 그 이유는 멀티사이트 네트워크에서는 모든 사용자가 단일 데이터베이스 테이블에 저장되기 때문입니다. 네트워크 내 여러 사이트에 대해 여러 Discourse 사이트가 SSO 제공자로 기능할 수 있도록 허용하면, WordPress에 저장된 Discourse 사용자 ID가 고유하다는 것을 보장하는 단순한 방법이 없습니다.
멀티사이트 네트워크에 WP Discourse 플러그인이 설치되면, 네트워크 관리자(Network Admin) 메뉴에 Discourse 탭이 추가됩니다. 네트워크 내 모든 사이트의 SSO 제공자로 Discourse를 구성하려면 네트워크 관리자 페이지로 이동하여 메뉴에서 Discourse를 선택하십시오. ‘멀티사이트 구성 활성화(Enable Multisite Configuration)’ 옵션을 선택한 후 연결 설정(Connection Settings)을 입력하십시오. 그런 다음 페이지를 아래로 스크롤하여 SSO 설정(SSO Settings) 섹션으로 이동합니다. ‘SSO 클라이언트 활성화(Enable SSO Client)’ 옵션을 선택하십시오. SSO 비밀 키(SSO Secret Key)를 입력하고 설정 페이지를 저장하십시오.
주의할 점은, 멀티사이트 네트워크에서 SSO 클라이언트 기능을 활성화하면 Discourse 포럼의 모든 사용자에게 네트워크 내 모든 사이트에 대한 접근 권한이 부여될 수 있다는 것입니다.
결국, WordPress 멀티사이트 네트워크에서 Discourse를 SSO 제공자로 사용하여 위와 다른 것을 달성하려는 경우, 스스로 해결해야 합니다. WordPress 네트워크의 개별 사이트에 대해 여러 Discourse 사이트가 SSO 제공자로 기능하도록 기술적으로 가능하지만, 이를 위해 필요한 구성은 지나치게 복잡할 것입니다. 이것이 WordPress 플러그인에 추가될 가능성이 높지 않다고 생각합니다.
답변해 주셔서 정말 감사합니다. 인용하신 게시물이 제가 원래 게시글에서 언급했던 내용입니다. WordPress 쪽에서는 문제가 없습니다. 네트워크 레벨에서 연결을 설정한 후 모든 서브사이트에 걸쳐 사용자를 동기화하는 방법은 이미 알고 있습니다. 제가 더 이해하고 싶은 것은 하나의 Discourse를 다른 Discourse의 SSO 서버로 구성하는 방법입니다. "auth"로 사용되는 Discourse가 동시에 WordPress의 SSO 서버 역할을 하는 것이 가능한지 명확히 하고 싶었습니다.
Discourse-Discourse 구성에 대한 문서를 찾지 못했습니다. 관련 정보를 찾을 수 있는 위치를 알려주시거나 필요한 단계를 개요로 설명해 주시면 매우 감사하겠습니다.
Gary님의 입장을 이해합니다. 하지만 Discourse는 순수하게 인증 목적으로만 사용되도록 설계된 것이 아닙니다. 다양한 Discourse와 Wordpress 인스턴스에 연결할 수 있는 전용 인증 서비스를 구축하는 방안을 검토해 보시는 것을 권해 드립니다. 지금 연구에 조금만 투자하셔도 나중에 큰 이익을 얻을 수 있습니다.
상당히 단순합니다. 예를 들어 try.thepavilion.io를 test.thepavilion.io의 프로바이더로 설정하고 싶다면 다음과 같습니다.
그러나 Gary님께 드리고 싶은 가장 중요한 조언은, Gary님이 제안하신 구성이 복잡하다는 점입니다. 어떤 경로를 선택하든, 배포 전에 다양한 구성을 실험할 수 있도록 의도한 프로덕션 환경을 그대로 모사한 스테이징 환경을 설정해야 합니다. 이러한 환경 설정은 다양한 변수의 영향을 받을 수 있어 추상적인 조언만으로는 해결하기 어렵습니다.
서로 연결된 서버 네트워크를 위해 별도의 스테이징 환경을 설정해야 한다는 생각이 번거롭게 느껴질 수 있지만, 이렇게 할 때 드는 노력은 이러한 시스템을 런칭한 후에 발생하는 예기치 못한 문제를 해결하는 데 드는 노력보다 훨씬 적습니다.