Nextcloud에서 SSO를 사용한 Discourse

이것에 대한 가이드를 찾을 수 없었습니다. 하지만 제가 하고 싶은 것은 오픈소스 협업 환경인 Nextcloud 안에 Discourse를 "앱"으로 "통합"하는 것입니다. 이는 Nextcloud에서 Discourse를 "외부 사이트"로 여는 방식으로 이루어진다고 생각합니다. 일종의 iframe처럼 말이죠. 제 단계는 다음과 같습니다:

  1. Nextcloud/Discourse 간 SSO를 사용하기 위한 일종의 "통합 앱"이 있다는 것을 확인했습니다:
    https://apps.nextcloud.com/apps/discoursesso

  2. Nextcloud에서 + 앱 → 통합 → Discourse SSO로 이동합니다. 이 앱을 설치하고 활성화합니다.

  3. 내 설정으로 이동하여 SSO 정보를 입력합니다:

  4. 제 Discourse 포럼 사이트(스웨덴어입니다, 죄송합니다)로 이동하여 관리자 설정으로 갑니다:


    그리고 아래로 스크롤하여 이 3개 필드를 채웁니다:

  5. Discourse와 Nextcloud 모두에서 로그아웃합니다. Nextcloud에 로그인합니다(Nextcloud와 Discourse 모두에서 동일한 이메일 사용), 하지만 제 Discourse 포럼을 보여주는 "외부 사이트"를 성공적으로 열 수 없습니다.

왜 Firefox가 제 포럼이 임베드된 것으로 해석하는 것일까요?

SSO에 올바른 엔드포인트를 사용 중이신지 확인해 보셨나요?

두 번째로, CSP가 이 동작을 일으키고 있는지 확인해 보시는 것입니다(어떤 방식으로, 왜 그런지는 정확히 모르겠습니다).

SSO를 비활성화해 보았지만, 내 포럼이 위치한 서브도메인은 여전히 Nextcloud에서 열리지 않습니다. 반면, 일반적인 도메인 이름은 정상적으로 열립니다.
CSP라고 하면 제 Discourse가 호스팅된 클라우드 서비스 제공업체를 말씀하시는 건가요?

Nextcloud에서 가져옴

브라우저와 웹사이트가 HTTP 및 HTTPS URL을 처리하는 방식이 다양하고, External Sites 앱이 외부 링크를 IFrames에 내장하기 때문에 링크가 올바르게 작동하지 않을 수 있습니다.

Discourse는 <iframe> 태그에서 작동하지 않으며, Discourse 서버는 연결을 거부합니다.

감사합니다! 그런데 통합이 불가능하다면 왜 “SSO 통합” 앱이 있는 건가요? Discourse를 iframe으로 임베드할 수 있는 우회 방법이 있을까요?

수정: 이제 Nextcloud 포럼에 게시글을 작성했습니다. 거기서 명확한 답을 얻으면 다시 알려드리겠습니다.

자, Nextcloud 포럼의 한 사용자가 iframe에서 작동하지 않으므로 Discourse가 문제인 것 같다고 단순히 확인해 주었습니다. 빠른 구글 검색을 통해 이 4년 전 GitHub 프로젝트를 발견했습니다:

이 플러그인을 고려하여 app.yml을 수정한 후, 다음으로 무엇을 해야 하나요? 완전히 설치하려면 Discourse를 다시 빌드해야 하나요?

네, 플러그인을 설치하려면 재빌드가 필요합니다.

참고로, 4년 이상 유지 관리되지 않은 플러그인은 깨질 가능성이 매우 높습니다.

프로젝트 GitHub에서 이슈와 기능 요청을 제출할 수 있습니다. 아직 버전 20에 맞게 업데이트되지 않았습니다. 자세한 내용은 클릭하여 확인하세요.

팁 감사합니다! 이 앱을 직접 써보진 않으셨죠?

기록을 위해 말씀드리면: 저는 “allowifram” 플러그인을 설치했고, 제 Discourse가 실제로 충돌했습니다. :stuck_out_tongue:

관심 있는 분들을 위해, 개발자에게 Nextcloud에 Discourse를 통합하려는 시도가 있었는지 문의해 보았습니다: Amend so that Discourse can be opened within Nextcloud? · Issue #18 · habi-dat/discoursesso · GitHub
개발자는 그런 시도가 없었다고 답했지만, 다음 플러그인으로 iframe 문제를 우회해 해결했다고 합니다: GitHub - soudis/discourse-allow-same-origin · GitHub
아직 직접 시도해 보지는 않았습니다.

늦게 답변드려 죄송합니다. 최근 Nextcloud와 Discourse 통합 옵션을 살펴보고 있었습니다. 아마 이미 모든 문제를 해결하셨겠지만, 서로 경험을 나누고 싶습니다. 여전히 Discourse와 Nextcloud를 함께 사용하고 계신가요? 그렇다면 어떤 것을 달성하려 하고 있으며, 그 과정에서 어떤 결과가 나왔는지 더 자세한 정보를 공유해 주실 수 있을까요? 정말 감사하겠습니다!

알고 계시겠지만, Discourse는 iframe으로 로드되는 것을 허용하지 않습니다. 처음부터 그랬습니다. 이를 우회하는 방법은 Discourse의 매우 유연한 테마 시스템을 활용하여 메인 사이트와 일치하는 헤더를 추가하는 것입니다. 또한 필요에 따라 Nextcloud의 테마 시스템을 사용하여 이를 업데이트하여 일치시킬 수도 있습니다. Nextcloud의 외부 사이트 관리자 설정에서 redirect 옵션을 선택하면 해당 사이트가 임베딩을 허용하지 않는다는 의미입니다. 그러면 Discourse 링크가 iframe 없이 동일한 브라우저 탭에서 열립니다.

Screen Shot 2021-05-05 at 3.58.30 PM

참고하신 Nextcloud discoursesso 앱은 단순히 사용자가 Nextcloud를 통해 Discourse 사이트에 인증할 수 있도록 하는 것입니다. 올바르게 설정하고 있는 것으로 보입니다. 이제 Discourse URL로 이동하여 로그인만 시도하면 Nextcloud 자격 증명을 사용하여 로그인되어 있는 것을 확인할 수 있습니다.

참고로 Discourse에서 Discourse SSO는 Discourse Connect로 이름이 변경되었습니다. 이를 활성화하면 Discourse의 다른 모든 로그인 옵션이 완전히 대체되므로 신중하게 사용해야 합니다.

이 플러그인으로 성공하셨나요? :eyes:

플러그인을 설치했지만 여전히 “Failed to get Discourse notifications” 오류가 발생합니다