ONLYOFFICE Nextcloud連携における「トークンが無効です」エラーを修正する
JWTシークレット、認証ヘッダー、Docker設定、プロキシの動作、コネクタの状態を確認することで、NextcloudにおけるONLYOFFICEの「トークンが無効です」エラーを修正します。
ONLYOFFICEのメッセージ「トークンが無効です」は通常、連携する両側で同じJSON Webトークン(JWT)が検証されていないことを意味します。Nextcloudの設定では、ブラウザに送信されるエディタ設定、ONLYOFFICE Docsへの受信リクエスト、Nextcloudへのコールバックなどの送信リクエストといった、複数のトークンパスが存在することが重要です。これらのパスのいずれかでエラーが発生すると、ユーザー側からは同様のエラーメッセージが表示される可能性があります。
設定を変更する前に、重要な点が1つあります。ONLYOFFICE Docsではバージョン7.2以降、JWTがデフォルトで有効になっており、ドキュメントサーバーがシークレットを自動的に生成できます。そのため、「JWTを無効のままにする」という古いチュートリアルは、最新のインストール環境では適切な基準とは言えません。ONLYOFFICEの現在の推奨事項は、独自のシークレットを設定し、コネクタで同じシークレットを使用することです。詳しくは、ONLYOFFICEのJWT設定ガイドをご覧ください。
| 症状 | 最も可能性の高いエリア | 最初のアクション |
|---|---|---|
| ドキュメントを開くとすぐにエラーが表示されます | シークレット、ブラウザトークン、またはヘッダーの不一致 | Nextcloudの設定jwt_secretと、jwt_header現在アクティブなドキュメントサーバーの設定を比較してください。 |
| コンテナの再起動前は正常に動作していたが、その後失敗した。 | 自動的に再生成または変更されたDockerシークレット | 実行中のコンテナ環境を検査し、固定された設定で再作成しますJWT_SECRET。 |
| Direct Document Server のヘルスチェックは正常に動作するが、Nextcloud は無効なトークンを報告する。 | コネクタ構成またはプロキシ/ヘッダーパス | コネクタのocc onlyoffice:documentserver --checkテストを実行し、ヘッダーを比較してください。 |
| コールバックまたは保存のみが失敗する | 送信トークンの検証、コールバックパス、またはストレージ側のヘッダー処理 | ドキュメントサーバーのログを確認し、コールバックリクエストが期待されるJWTヘッダーとともにNextcloudに到達していることを確認してください。 |
| 有効期限の境界付近で断続的にエラーが発生します | クロックスキューまたはトークンの寿命 | JWTの許容時間を変更する前に、両方のホストで時刻が同期していることを確認してください。 |
JWTの検証は、共有シークレットに依存します。ONLYOFFICE Docsはこのシークレットを使用してトークンに署名し、受信側は同じ値を使用して署名を検証します。1文字の違い、末尾の空白、古い環境変数、または再生成されたDockerシークレットなどによって、一見有効に見えるトークンでも検証に失敗する可能性があります。
Nextcloudでは、コネクタがこのjwt_secret設定をサポートしています。公式コネクタにはocc設定インターフェースも用意されているため、有効になっていると思われる設定ファイルに頼るのではなく、Nextcloudが実際に使用している値を確認できます。コネクタの現在の設定については、公式のONLYOFFICE NextcloudコネクタのREADMEファイルに記載されています。
sudo -u www-data php occ config:app:get onlyoffice jwt_secret
sudo -u www-data php occ config:app:get onlyoffice jwt_header
秘密鍵は、サポートチケット、スクリーンショット、他者と共有するシェル履歴、または公開されている問題報告に貼り付けないでください。ローカル環境で比較してください。
ONLYOFFICE DocsのネイティブLinuxインストールの場合、サポートされている設定ファイルは次のとおりです。
/etc/onlyoffice/documentserver/local.json
ONLYOFFICE では、ブラウザ、受信トレイ、送信トレイのトークン設定を個別に文書化しています。検証に使用する秘密の値は、コネクタ構成と一致している必要があります。編集しないでくださいdefault.json。ONLYOFFICE は、再起動またはアップグレード時にデフォルト値が上書きされる可能性があることを明示的に警告しています。local.jsonパッケージのインストールに使用してください。
local.jsonコンテナ内で直接編集するのではなく、Docker環境変数を使用してください。ONLYOFFICEは、Dockerが起動時にJWT構成を再生成できると述べています。公式イメージはJWT_ENABLED、、、、をサポートしています。現在のDockerイメージのドキュメントでは、がデフォルトのJWTヘッダーとして記載されていますJWT_SECRET。公式のDocker DocumentServerリポジトリを参照してください。JWT_HEADERJWT_IN_BODYAuthorization
environment:
- JWT_ENABLED=true
- JWT_SECRET=replace-with-a-long-random-secret
- JWT_HEADER=Authorization
Dockerの環境変数を変更した後は、実行中のサービスが変更内容を受け取れるようにコンテナを再作成してください。コンテナを再作成せずにComposeファイルを編集するだけでは、既存の環境は変更されません。
よくある誤解として、ヘッダー名は単なる装飾だと思われがちですが、そうではありません。ONLYOFFICE Docsには設定可能な受信トレイと送信トレイのトークンヘッダーがあり、Nextcloudコネクタにもjwt_header設定項目があります。これらは同じリクエストパスを記述する必要があります。
ONLYOFFICE API の最新ドキュメントではAuthorization、受信 JWT リクエストのドキュメント サーバーのデフォルトとして が記載されており、公式の Nextcloud 統合ドキュメントでも同様に、 がAuthorization通常のコネクタのデフォルトとして識別されています。古い例や既存のインストールでは、 または明示的に構成された別の値を使用する場合があります。したがって、安全なルールは「常に 1 つの特定の文字列を使用する」ことではなく、アクティブな構成を両側で一致させることAuthorizationJWTです。
リクエストのフォーマットも重要です。ONLYOFFICEのAPIドキュメントでは、Bearerスキームを使用して送信されるヘッダートークンについて説明しています。基盤となるプロトコルの詳細については、ONLYOFFICEのトークンインヘッダーに関するドキュメントを参照してください。
意図的にカスタムヘッダーを使用する場合は、両方の製品で同じ値を設定してください。カスタマイズする理由がない場合は、現在のデフォルト値を使用することで、Authorization可動部品を減らすことができます。
NextcloudとONLYOFFICEの設定が一致しているにもかかわらずエラーが解消されない場合は、両者間の経路を調べてください。リバースプロキシ、認証ゲートウェイ、WAF、またはイングレスコントローラーが認証ヘッダーに影響を与える可能性があります。これは使用しているシステム構成によって異なるため、証拠なしにプロキシが原因だと決めつけないでください。
以下の実技試験手順を使用してください。
Authorization、ヘッダーを置き換えたり削除したりするのではなく、転送することを確認してください。エラーを解消するためだけにJWTを無効にしないでください。それでは検証メカニズムが修復されるのではなく、単に削除されるだけです。また、JWTの修正としてTLS検証を無効にしないでください。証明書の検証とJWT署名の検証は別々の制御です。証明書に問題がある場合は、証明書チェーンまたは信頼構成を個別に修正してください。
ONLYOFFICEの公式コネクタには、専用の診断コマンドが含まれています。
sudo -u www-data php occ onlyoffice:documentserver --check
コネクタのドキュメントによると、このチェックでは接続の成功またはエラーの原因が報告されます。ドキュメントサーバーのランディングページだけをテストするよりも、Nextcloudの視点から統合を検証できるため、より有用です。
ドキュメントサーバーへの接続は確認できたもののトークンの検証に失敗した場合は、シークレットとヘッダーに戻って確認してください。サーバーに全く接続できない場合は、JWTに時間をかける前に、DNS、ルーティング、ファイアウォール、TLS、または内部URLの問題を解決してください。
JWTには時間関連のクレームが含まれる場合があり、Nextcloudコネクタはjwt_leewayそれらのjwt_expiration設定を公開します。しかし、だからといって最初に猶予期間を長くすべきではありません。時計の時刻が著しく間違っていると、本来正しいはずのトークンが無効になる可能性があり、猶予期間を長くするとインフラストラクチャの問題が隠蔽されてしまうことがあります。
NextcloudとONLYOFFICEのホストまたはコンテナにおけるUTC時間を比較します。
date -u
timedatectl status
両方のシステムが確実に時刻を同期していることを確認してください。わずかな、正当なクロック差を確認した後でのみ、許容範囲を狭く設定することを検討してください。コネクタでサポートされているJWT設定については、公式のコネクタ構成リファレンスに記載されています。
ONLYOFFICE Docs は、エディタの初期化とサーバー間リクエストを保護するために JWT を使用しています。その API は、ブラウザトークンを受信および送信 HTTP リクエストトークンから分離します。受信リクエストの場合、トークンはヘッダーまたはサポートされている POST リクエストの場合はリクエストボディに含められます。GET リクエストの場合、ONLYOFFICE はヘッダーベースのトークン処理についてドキュメント化しています。公式の request-signature ドキュメントを参照してください。
これは、ある操作は成功するのに、別の操作が失敗する理由を説明しています。例えば、片方の方向のみに正しいトークン設定がある場合、エディタを開く操作は成功しても、後続のコールバックやダウンロード要求が失敗する可能性があります。
いいえ。ヘルスエンドポイントはサービスが応答していることを証明しますが、Nextcloudコネクタとドキュメントサーバーが同じJWTシークレットとヘッダーを共有していることを証明するものではありません。対処方法:occ onlyoffice:documentserver --check有効なコネクタ設定を実行して確認してください。
これはDockerデプロイメントにとって脆弱です。ONLYOFFICEは、起動時に構成が再生成される可能性があるため、Docker環境変数を介してJWTを設定することを推奨します。対処方法:コンテナ構成で、必要に応じて、、をJWT_ENABLED定義し、コンテナを再作成してください。JWT_SECRETJWT_HEADER
いいえ。現在の公式ドキュメントサーバー構成では、Authorizationデフォルトのヘッダーとしてリストされていますが、既存のデプロイメントや古い例では、明示的に構成された別のヘッダーが使用されている場合があります。対処方法:アクティブな両方の構成を読み込み、同じ内容にしてください。
即時の検証エラーは解消されるかもしれませんが、セキュリティ制御が失われ、根本的な不一致が隠蔽される可能性があります。対処法: JWTを使用せずに運用する明確な理由が文書化されていない限り、共有シークレット/ヘッダーを修正してください。
occ onlyoffice:documentserver --check成功する。
シークレットとヘッダーが一致し、クロックが同期され、コネクタのチェックが成功しているにもかかわらず、特定の操作で無効なトークンが報告される場合は、設定を変更する前に、失敗したリクエストの正確な方向と対応するログを取得してください。ONLYOFFICE はブラウザ、受信トレイ、送信トレイの検証を区別するため、次の問題は、エラーがエディタの初期化中、ドキュメント サーバーに送信されるコマンド中、または Nextcloud に返されるコールバック/ダウンロード中に発生したかどうかです。
ドキュメントサーバーのログは、同じタイムスタンプのNextcloudログおよびプロキシログと併せて使用してください。完全なJWTやシークレットを公開することは避けてください。トークン構造を比較する必要がある場合は、署名と機密性の高いクレームを削除してください。署名と検証の参照動作については、ONLYOFFICEの署名ドキュメントを参照してください。
JWTシークレット、認証ヘッダー、Docker設定、プロキシの動作、コネクタの状態を確認することで、NextcloudにおけるONLYOFFICEの「トークンが無効です」エラーを修正します。
コールバック、内部URL、JWT、TLS、プロキシルーティング、ログ、ストレージを確認することで、NextcloudにおけるONLYOFFICEの「ドキュメントを保存できませんでした」エラーを修正します。
Collabora Onlineのソケット接続エラーを修正するには、26.04 WebSocketの変更点、プロキシルート、アップグレードヘッダー、タイムアウト、TLS、およびログを確認してください。
Collabora Onlineで多言語スペルチェックを有効にするには、サーバー辞書を追加し、言語コードを許可し、テキストに言語を割り当て、複数の言語を含む文書をテストします。
Calcデータ、名前付き画像プレースホルダー、およびBasicマクロを使用して、レコードごとに画像を挿入する信頼性の高いLibreOffice Writerメールマージを作成する方法を、トラブルシューティングと検証の手順とともに解説します。
WOPI、リバースプロキシ、TLS、DNS、WebSocket、およびサーバー間の接続可能性をチェックすることにより、Collabora Onlineのドキュメント接続障害を診断および修正します。
ONLYOFFICEデスクトップエディター(オフライン版)でPDFファイルを編集可能なDOCXファイルに変換します。「名前を付けて保存」の手順に従い、PDFファイルがスキャンされているか確認し、書式設定をチェックしてください。
SeafileをDockerまたは別のホストを使用してCollabora Onlineに接続します。デプロイメントのトレードオフを比較し、HTTPSとWOPIの設定を構成し、編集内容を確認します。
画像が多いLibreOffice Writerファイルで、入力、スクロール、保存が遅い場合の診断を行います。ディスプレイ設定をテストし、サイズの大きい画像を圧縮して、プロファイルまたはハードウェアの問題を特定します。
公式Helmチャートを使用して、Kubernetes上にCollabora CODEをデプロイします。イングレス、TLS、WOPIホストアクセス、シークレット、スケーリング、エンドツーエンドチェックを設定します。