Firefox Can’t Open This Page
To protect your security, forum.site1.org will not allow Firefox to display the page if another site has embedded it. To see this page, you need to open it in a new window.
Embedding 기능을 확인해 보았지만, 이 기능은 다른 목적으로 사용되는 것 같습니다. 단일 주제(topic)로 제한하고 싶지 않으며, 사용자는 로그인하지 않은 상태입니다. 초기 단계에서는 사용자가 로그인하지 않고 전체 포럼을 읽기 전용으로 사용할 수 있다면 괜찮습니다.
Discourse 서버는 하나이며, 평소처럼 사용자 계정과 게스트는 여러 명이 있습니다. 등록된 사용자는 로컬 웹서버를 호스팅하는 애플리케이션을 보유하고 있습니다. 이 애플리케이션에서 웹 페이지가 생성되며, 로컬 브라우저에서 http://192.168.1.1:8080으로 액세스합니다. 해당 웹 페이지는 IFrame을 통해 포럼을 제공합니다.
콘텐츠를 서빙하는 서브넷에 대한 제어 권한이 없으므로 IP는 일반적인 NAT/DHCP에서 나올 수 있습니다. 하지만 다음 사항에 대해서는 완전한 제어 권한이 있습니다:
Discourse 설치 및 서버.
서빙되는 콘텐츠.
포트 번호는 일반적으로 8080이며 사용자가 설정할 수 있지만, 80이나 443은 절대 아닙니다.
이는 로컬 콘텐츠이므로 임무 비중요(mission-critical)가 아니어서 SSL 보안이 적용되지 않습니다.
사용자는 Discourse 계정을 가져야 하며 쓰기 액세스를 위해 Discourse에 로그인해야 합니다.
보안에 관하여:
공개 포럼은 호스트명을 통해 네트워크에 접근 가능합니다.
네트워크 액세스는 물론 항상 SSL 보안이 적용됩니다.
로그인하지 않으면 누구도 포럼 콘텐츠를 생성할 수 없습니다.
따라서 네, 로컬 페이지와 IFrame은 HTTP로 서빙되지만, IFrame 소스는 HTTPS://forum.site.tld입니다. (이 프로토콜 차이가 CSP를 비활성화했음에도 포럼에 액세스하지 못하는 원인이 될 수 있습니다.)
사용자가 브라우저를 실행하여 로컬 서버에 액세스하려면 비밀번호를 입력해야 합니다. SSL이 활성화된 포럼 사이트로의 IFrame과 해당 조상(ancestor) 페이지 간 일관성을 유지하기 위해 필요한 경우 해당 페이지에 SSL을 활성화할 수 있습니다.
우리는 IFrame을 통해 Discourse로 스크립트를 실행하거나 의도하지 않습니다. 우리가 원하는 것은 포럼을 컨테이너에 호스팅하는 것뿐입니다.
아무런 근거가 없을 수도 있는 몇 가지 즉흥적인 아이디어를 제시합니다:
사용자가 자신의 Discourse 계정 페이지에서 API 키를 가져와 애플리케이션에 입력하도록 허용하고, 이는 쿠키 또는 기타 방식으로 Discourse에 전달됩니다. 이는 사용자가 CORS나 CSP를 준수하지는 않지만 리소스에 액세스할 권한은 있음을 확인해 줍니다.
애플리케이션이 IFrame URI에 토큰을 주입하여 Discourse로 전송합니다. 동시에 API 호출을 사용하여 Discourse가 해당 토큰으로의 입점(inbound) 연결을 허용하도록 합니다. (예, 이를 위해서는 코딩이 필요합니다)
좀 더 난감한 상황이 될 수 있지만… 서브넷 콘텐츠를 위한 IFrame과 포럼을 위한 또 다른 IFrame을 여는 커뮤니티 사이트의 페이지를 만듭니다. 이 단일 사이트는 크로스 오리진 액세스를 위해 인증될 수 있습니다.
정책을 우회하려는 시도를 포기하고 target=window를 사용하여 애플리케이션 창 밖에서 Discourse를 엽니다.