質問
ウェブクライアントが iframe で表示されないのはなぜですか?
ウェブクライアントは、ドキュメントの管理、編集、共有を可能にするソフトウェアソリューションです。Webクライアントを自分のサーバーにインストールし、ブラウザからアクセスすることができます。また、WebクライアントをiFrameに埋め込んで他のWebサイトに統合することもできます。iFrame は、Web ページに別の Web ページを挿入できる HTML 要素です。
ただし、iFrame のアドレスが Web クライアントのアドレスと異なる場合、Web クライアントは iFrame に表示されないことがあります。これは、使用しているブラウザのセキュリティガイドラインによるものです。多くのブラウザメーカーは、クロスサイト攻撃を防ぐためにブラウザのセキュリティガイドラインを強化しています。クロスサイトアタックとは、攻撃者がiFrameやスクリプトをウェブサイトに埋め込むことによって、他のウェブサイトからデータを盗んだり、操作しようとする攻撃のことです。
このような攻撃を防ぐために、多くのブラウザはいわゆるセイムオリジンポリシーを使用しています。このポリシーは、iFrameは、iFrameを含むウェブサイトと同じソースからのコンテンツのみを読み込むことができると述べています。ソースは、プロトコル、ホスト、ポートの組み合わせによって決定されます。
つまり、iFrame のページと異なるアドレスで Web Client を呼び出した場合、Web Client はその中に表示されません。例えば、https://iframe.example.comというアドレスで Web Client を呼び出したのに、iFrame がhttp://iframe.example.comというアドレスを表示している場合、プロトコル(https対http)が異なるため、iFrame はブロックされます。また、http://webclient.
この問題を解決するには、Web クライアントのアドレスと iFrame のアドレスが同じソースであること、つまり同じプロトコル、同じホスト、同じポートを使用していることを確認する必要があります。あるいは、より厳密でない同一オリジンポリシーを使用する別のブラウザを使用してみるか、ブラウザのセキュリティ設定を調整して、他のソースからのiFrameを許可することもできます。ただし、クロスサイト攻撃を受けやすくなるため、セキュリティ上のリスクがあることを認識しておく必要があります。
同一生成元ポリシーを回避するもう1つの方法は、CORSまたはプロキシサーバーを使用することです。CORSとはCross-Origin Resource Sharingの略で、ウェブサーバーがどのソースからリソースへのアクセスが許可されているかを判断するための仕組みです。CORSはHTTPヘッダーを使用して、異なるソース間の通信を制御します。CORSを使用する場合は、Webクライアントをホストするサーバーで適切なヘッダーを設定する必要があります。また、使用しているブラウザーが CORS をサポートしていることを確認する必要があります。
プロキシサーバーは、ブラウザーと Web クライアントの間で仲介役を果たすサーバーです。プロキシ サーバーはリクエストを受信し、同じソースから来たかのようにウェブ クライアントに転送します。このように、プロキシサーバーを仲介として使用することで、同一生成元ポリシーを回避することができます。ただし、リクエストをWebクライアントに転送するプロキシサーバーを見つけるか、セットアップする必要があります。
CORSまたはプロキシサーバーのセットアップは、サーバー管理者またはITサービスプロバイダーが行う必要があります。DocuWareは、サーバーやネットワークの設定や運用について責任を負いません。DocuWareは、お客様がサーバーにインストールして使用できるソフトウェアソリューションとしてWeb Clientを提供するのみです。
詳細情報:
"Working with Same-Origin Policy Restrictions" - https://www.codecentric.de/wissens-hub/blog/working-origin-policy-restrictions
"Enabling cross-origin requirements (CORS) in ASP.NET Core" - https://learn.microsoft.com/de-de/aspnet/core/security/cors?view=aspnetcore-8.0
以下の情報は、現在お客様システムをインストールしていて、クロスドメインシナリオに遭遇している場合のその場しのぎの回避策として役立ちます。顧客システムが稼動する前に、上記のクロスドメインのトピックが別の場所で実装されている必要があります!
つまり、Web Clientが同じドメインまたはアドレスを含まないページのiFrameに統合されている場合(クロスドメイン)、これはデフォルトで拒否されます。
このセキュリティメカニズムを無効にするには、次の設定を行う必要があります(マイナーまたはメジャーアップデートの後にも):
- ファイル "C:◆Program Files◆DocuWare◆WebPlatformWeb.config "
、それ以前のバージョンは "C:◆Program Files(x86)◆DocuWare◆WebPlatformWeb.config "を保存する。 - ファイル "Web.config "を開く。
<location path="WebClient">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
<!--<location path="WebClient">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>-->- 変更を保存する
- コンポーネントを再起動する必要はありません!
DocuWare 6.5を使用している場合は、Hotfix 21もインストールする必要があります:
https://dwsupport.blob.core.windows.net/supportdownloads/hotfixes/6.5/DW6.5_Hot21.zip
。そのため、(DocuWareがiFrameとして埋め込まれているアプリケーションとDocuWare自体の)両方のアプリケーションを同じサーバー上で実行する場合は、SAMEORIGINオプションを使用することをお勧めします。
そのため、DocuWare 7.4からは、 iframe内でDocuWareを使用するためのHTTPは サポートさ れません(Firefoxまたはiframeのドメインがブラウザードメインと同一である場合を除く)。
DocuWare 7.4の技術的な変更点を参照してください。