JWTとは何か、そしてこの技術がどのようにドキュメントを保護するのか

2022年09月27日著者:Denis

暗号化、透かし、アクセス権の制限など、ファイルを積極的に保護する方法があります。しかし、ドキュメントのセキュリティはそれだけでは終わりません。JWTは、常にバックグラウンドで動作し、許可されたユーザーだけがファイルを編集できるようにする重要なアクセス保護エージェントです。

What is JWT and how this technology protects your documents

JWTとは

JSON Web Token(JWT、発音は/dʒɒt/)は、主に認証とデータ転送の2つの目的で使用される安全なオンライン情報交換のオープン標準です。

コンパクトなJSONオブジェクトには認証情報が含まれていて、ウェブアプリケーションに適用すると、サービスの正当なユーザーを確認する機能が提供されます。一言で言えば、情報の送り手が本人であることをアプリケーションが確認するのに役立ちます。

JWTは、ヘッダー、ペイロード、署名の3つの部分からなる、文字列形式の自己完結型のオブジェクトです。ヘッダーにはトークンに関する情報と署名の生成方法、ペイロードにはアクセスの許可を与えるために必要なユーザーに関する主張、そして署名はユーザーの妥当性を検証します。

トークンは、転送されたデータの出所を検証するのに役立つ秘密鍵で署名することができます。

ONLYOFFICEのセキュリティトークン利用方法

ONLYOFFICEでは、JWTは編集者とユーザー間のデータストリームを保護します。これは、Docsの編集セッションに入り、ドキュメントで特定のアクションを実行しようとするユーザーを確認するのに役立ちます。ONLYOFFICE ドキュメントサーバとのHTTPリクエストごとに、トークンが生成され、パラメータに追加されます。ここでは、ユーザーアクションごとに異なるJWTが生成されます。トークンはそれぞれ同じシークレットで署名されていますが、入力を認証するための情報は異なります。たとえば、エディタを開くとき、ファイルに画像を挿入するとき、文書のバージョン履歴を開くときなどには、別のトークンが作成されます。

例えば、www.example.com でホストされているファイルに PNG 画像を追加する場合、以下のパラメータがトークンに含まれます:

{
    "fileType": "png",
    "url": "https://example.com/url-to-example-image.png"
}

そして、サンプル・トークンは次のようになります。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaWxlVHlwZSI6InBuZyIsInVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vdXJsLXRvLWV4YW1wbGUtaW1hZ2UucG5nIn0.FXuC3GUvPq3japwyzo4i-utUe3g1rfSDt1ytuK_VyCc

JWTに署名するために、ONLYOFFICE Docsが統合されている各共有サービスでは、カスタムシークレットが使用されています。

シークレットキーを取得する方法

ONLYOFFICE Docsの旧バージョンでは、JWTのシークレットはホストサービス(Nextcloudなど)の管理者が生成し、ONLYOFFICE Document Serverへ設定から手動で送信し、有効化する必要がありました。

バージョン7.2からは、デフォルトでJWTが有効になっています。ONLYOFFICE Docsをインストールして起動すると、ランダムなシークレットが自動的に生成され、ホストアプリケーション側で追加するだけでよいのです。

注意:すでにJWTでONLYOFFICE Docsを使用している場合、オリジナルのキーはセットアップに残ります。例外はDockerインストールです:インストールされたDocument Serverにおいて、環境変数が設定されていないか、JWTパラメータが定義されていない場合、アップデート後にランダムシークレットが生成されます。

LinuxとWindowsサーバーのインストール

デフォルトのJWTシークレットは、以下のパスを使用してlocal.jsonファイルから取得することができます。

Linuxの場合: /etc/onlyoffice/documentserver/local.json

Windowsの場合: %ProgramFiles%\ONLYOFFICE\DocumentServer\config\local.json

services.CoAuthoring.secret.browser.string パラメータでシークレットを確認できます。

Dockerのインストール

ONLYOFFICE DocsをDockerでインストールする場合、以下のスクリプトを実行し、シークレットを取得します。

sudo docker exec f00ad6e66a40 /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'

デフォルトのシークレットをカスタムキーに置き換えるには、このドキュメントをご参照ください。

ONLYOFFICE Docsのインストール後、起動ページでは、各インストール方法の個別解説が公開されます。

JWTはどこで利用できるのか?

JWTはONLYOFFICE公式の連携アプリのほぼすべてでサポートされています。

  • Nextcloud
  • ownCloud
  • Alfresco
  • Moodle
  • Mattermost
  • Chamilo
  • HumHub
  • Confluence
  • Plone
  • Strapi
  • Liferay
  • Jira
  • Nuxeo
  • Redmine
  • WordPress

公式ウェブサイトで利用可能なすべての統合を閲覧し、対応するGitHubページでトークン設定ガイドをご覧ください。

もし自分のアプリのためにONLYOFFICE統合アプリを作りたいなら、私たちのAPIガイドラインを使用してセキュリティトークンのサポートを追加することが可能です。