Cloudflare Access配下で使っているNextcloudで、Nextcloud自体にはログインできるのに、Officeでドキュメントを開けないことがありました。
私の環境では、Office側のURLを別タブで直接開き、認証を済ませてからNextcloudに戻ると、ドキュメントが開けるようになりました。WindowsとPixelの両方で、同じ結果を確認しています。
今回は、そのときの症状と対処をまとめます。原因を通信ログから特定した記事ではなく、実際に改善した操作の記録です。
起きていた症状
Nextcloudにはログインできるものの、Officeでドキュメントを開こうとすると、次のエラーが表示されました。
ドキュメントの読み込みに失敗
Nextcloudに入れているので、Officeもそのまま使えそうに見えます。ただ、今回の切り分けでは、Office側を直接開いて認証する操作が改善につながりました。
解消した手順
行った操作は、次の流れです。
- Nextcloudを開いているブラウザで、別のタブを開く。
- 自分の環境のOffice側のURLに直接アクセスする。
- Office側で求められるCloudflare Accessの認証を完了する。
- 元のNextcloudのタブに戻り、ドキュメントを開き直す。
これで、Officeからドキュメントを開けるようになりました。
同じ方法を試す場合は、Nextcloudを使っているのと同じブラウザ・同じプロファイルで認証してください。別のブラウザやシークレットウィンドウでは認証状態が共有されないため、切り分け条件が変わってしまいます。
Office側のURLは、各自の環境で設定しているものを使います。Collabora Onlineを利用する構成では、Nextcloud Officeの設定にCollabora OnlineサーバーのURLを指定します。URLが分からない場合は、その設定を確認するか、管理者に確認してください。設定項目の説明はNextcloud公式ドキュメントにあります。
WindowsとPixelで確認した結果
WindowsとPixelの両方で、次の流れを確認しました。
- Nextcloudにはログインできるが、Officeでドキュメントを開けない
- Office側を別タブで直接開き、認証する
- Nextcloudに戻ると、ドキュメントが開ける
少なくとも、今回確認した両方の端末では、この操作で改善しました。すべてのOSやブラウザで同じ結果になるかは、今回の確認範囲には含めていません。
考えられる理由
ここからは、今回の挙動と公式ドキュメントを踏まえた推測です。
Cloudflare Accessは、保護対象のドメインに対する認証・認可の確認に、CF_Authorization Cookieを使います。複数ドメインを扱う場合のCookie発行方法も、Accessアプリケーションの構成や設定によって変わります。Cloudflare公式ドキュメントに、この仕組みが説明されています。
NextcloudとOfficeが別オリジンで提供され、Officeの画面がNextcloud内に埋め込まれる構成では、Nextcloudにログインできていても、Office側へのアクセスに必要な認証状態がまだ整っていない可能性があります。
今回も、Office側を直接開くことで、そのアクセス先に必要な認証状態が整い、NextcloudからOfficeを読み込めるようになったのではないかと考えています。ただし、失敗したリクエストやCookieの状態を根拠に原因を確定したものではありません。
なお、CloudflareのCORSに関する公式資料にも、対象ドメインをブラウザで直接開いて認証し、元のページを更新する手順があります。今回の操作と共通していますが、この資料だけで今回のエラーをCORSの問題と断定することはできません。Cloudflare公式ドキュメントの手動認証手順
ブラウザの認証とWOPIの通信は分けて確認する
Nextcloud Officeでは、ブラウザからのアクセスに加え、NextcloudとCollabora Onlineの間でも通信が必要です。Nextcloud公式のトラブルシューティングでは、次の接続を確認するよう案内されています。
- ブラウザからNextcloudとCollabora Onlineへの接続
- NextcloudからCollabora Onlineへの接続
- Collabora OnlineからNextcloudへの接続
詳しくはNextcloud公式のトラブルシューティングを参照してください。
WOPIは、Collabora OnlineがNextcloud上のファイルを扱うための連携に関わります。今回の別タブでの認証はブラウザ側の操作なので、サーバー間のWOPI通信や許可設定の問題まで解消するとは限りません。Nextcloud公式のWOPI設定説明
同じ操作で改善しない場合は、ブラウザからOfficeに到達できるかと、サーバー間で必要な通信ができているかを分けて調べると、切り分けやすくなります。
まとめ
Cloudflare Access配下のNextcloudでOfficeだけが開けない場合、Office側のURLを別タブで直接開き、認証を済ませる操作が切り分けの手がかりになります。
私の環境では、この操作で「ドキュメントの読み込みに失敗」が解消し、WindowsとPixelの両方でドキュメントを開けるようになりました。
認証の有効期限が切れた後も再発しないかなど、恒久的な解消についてはこの記事では確認範囲外です。まずは、今回改善した操作の記録として残しておきます。