ダウンロードボタンを削除することで閲覧専用のワークフローをサポートできますが、表示されたドキュメントがコピー不可能になるわけではありません。安全な実装にはサーバー側認可、保護されたストレージ、短命なセッション、慎重なロギング、そしてユーザーインターフェイスの制限が実現できる範囲に関する正直な理解が必要です。
Doconut はビジネスアプリケーション向けの埋め込み型 .NET ドキュメントビューアを提供します。本チュートリアルでは、推測された構成プロパティや未文書化の Doconut ソースコードを公開せずに、周辺のセキュリティ設計を説明します。

1. 「閲覧専用」の意味を定義する
正確なポリシーから始めます。チームによって「閲覧専用」の解釈は異なることがあります。
- 元ファイルをダウンロードできないようにする。
- エクスポートアクションを表示しない。
- 印刷を許可しない。
- 認可されたセッション中のみ閲覧を許可する。
- ユーザーがストレージの場所に直接アクセスできないようにする。
- ドキュメントが開かれたときに監査記録を残す。
これらは別個の制御です。必要なものを決定し、選択した Doconut 製品、プラグイン、ライセンスが求めるビューア動作をサポートしているか確認してください。
可視化されたドキュメントが捕捉できないと約束してはいけません。スクリーンショット、カメラ、アクセシビリティツール、ブラウザ機能、表示ピクセルへの認可されたアクセスにより、完全な防止は現実的ではありません。
2. 元ファイルを保護する
元のドキュメントは保護されたサーバー側ストレージに残す必要があります。
使用する項目:
- サーバー生成のドキュメント識別子
- 制限されたストレージ権限
- 必要に応じた静止時暗号化
- 文書化された保持ポリシー
- アップロード、閲覧、エクスポート、管理用の個別権限
クライアントにストレージ認証情報、無制限のファイルパス、永続的な公開 URL を送信しないでください。
3. すべてのドキュメント要求を認可する
ASP.NET Core では、標準の認証・認可メカニズムでビューアルートを保護します。
サーバーは次を検証すべきです:
- ユーザーが認証されていること。
- ドキュメントが存在すること。
- ユーザーがその特定のドキュメントを閲覧できること。
- 要求されたアクションがユーザーのロールと現在のワークフロー状態で許可されていること。
[Authorize] 属性でルートを保護でき、ポリシー、クレーム、またはリソースベースの認可でドキュメント固有の判断を行えます。
認可は、ドキュメントデータ、ページ、エクスポート、注釈、印刷出力を返すエンドポイントすべてに適用する必要があります。最初のページだけを保護しても、代替ルートが露出したままです。
4. 閲覧権限とダウンロード権限を分離する
隠しボタンから権限を推測するのではなく、権限を明示的にモデル化します。例:
CanViewDocumentCanDownloadOriginalCanExportDocumentCanPrintDocumentCanManageDocument
これらはアプリケーションポリシーを表す名前であり、Doconut API ではありません。認可レイヤーはサーバー側でこれらを評価し、対応するアクションを実行する前にチェックします。
管理者はダウンロード権限を持ち、別の認証ユーザーは閲覧権限のみを持つことができます。両者は同じアプリケーションページを共有しながら、異なる権限で操作できます。
5. 公式ドキュメントからビューアを構成する
インストールされている正確な Doconut バージョン向けに文書化された構成名と統合手順のみを使用してください。
検証済みの Doconut Viewer ページ には最新の製品情報が掲載されています。Doconut ダウンロードおよびドキュメントページ ではインストールリソースとバージョン固有のサンプルが入手できます。
もしインストールされた製品がダウンロードアクションの非表示または無効化をサポートする設定を提供している場合:
- 公式ドキュメントに従って適用する。
- ユーザーインターフェイスおよびワークフロー制御として扱う。
- 関連するサーバーエンドポイントは保護したままにする。
- 認可されていないユーザーが直接リクエストで回避できないことをテストする。
無関係な記事から推測した構成プロパティをコピーし、サポートされていると仮定しないでください。
6. ビューア統合はサービス層の背後に置く
専用のアプリケーションサービスは次を行います:
- 認可されたドキュメントを解決する
- 承認されたストレージ抽象化を通じて開く
- サポートされるビューア構成を適用する
- ストリームと一時リソースを解放する
- サニタイズされた監査イベントを記録する
- コントローラへ安全なエラーを返す
これにより SDK 固有の詳細が認可ポリシーやプレゼンテーションコードから分離されます。Stream、FileStream、CancellationToken、依存性注入サービスといった標準 .NET 型を利用してアプリケーション境界を構築してください。Doconut の公式ドキュメントに従って SDK 呼び出しを行います。
7. ディフェンス・イン・デプスを適用する
閲覧専用ワークフローには次のような層を組み合わせます:
- 認証とリソースレベルの認可
- ネットワークとストレージの分離
- 短時間セッション
- 制限されたエクスポート・印刷ルート
- サポートされる場合の透かし付与
- ドキュメントアクセスの監査イベント
- レートリミットと同時実行制御
- 明確な保持・クリーンアップ規則
- 異常アクセスパターンのセキュリティ監視
単一の制御だけでは不十分です。サーバー保護のない隠しボタンは特に回避しやすくなります。
8. データ漏洩しないようにアクセスを記録する
有用な監査項目例:
- アプリケーション側ドキュメント識別子
- 認可されたユーザー識別子
- タイムスタンプ
- 要求されたアクション
- 結果
- 相関識別子
- 拒否または失敗のサニタイズ理由
記録すべきでない項目:
- ドキュメント内容
- ストレージ認証情報
- アクセストークン
- 敏感な URL
- 完全なサーバーパス
- 不要な個人情報
監査ログは機密性と保持要件に応じて保護してください。
9. UI バイパス試行をテストする
ツールバーのボタンが無いことを確認しただけで止まらないでください。閲覧専用ユーザーが次を行えるかテストします:
- 元ファイルのルートへ直接リクエストする
- エクスポートまたは印刷ルートを呼び出す
- ドキュメント識別子を変更する
- 期限切れセッションを再利用する
- 他ユーザーのドキュメントにアクセスする
- マークアップやネットワーク応答からストレージ URL を発見する
- 内部パスを露呈する詳細エラーを誘発する
- 権限が取り消された後もアクセスを保持する
自動化された認可テストと手動のブラウザテストの両方を実施してください。
10. ユーザー期待を正確に設定する
ポリシーが何を行うかを説明します:
- アプリケーションが提供するダウンロードまたはエクスポートワークフローを制限する。
- 認可されたユーザーのみがアクセスできるようにする。
- 閲覧イベントを記録する可能性がある。
- 元ファイルはサーバー側の制御下にある。
また、何が保証できないかも明示します:
- すべての環境での写真撮影やスクリーンショットを防止できない。
- 既に見た情報や記憶は取り消せない。
- 契約上、組織上、エンドポイントのセキュリティ制御の代替にはならない。
この区別により製品の信頼性が高まり、ステークホルダーは高度に機密な資料に対して適切な制御を選択しやすくなります。
Verification Checklist
- 閲覧とダウンロードは別々のサーバー権限で管理されている。
- すべてのドキュメント要求でリソースレベルの認可が行われている。
- 元ファイルに永続的な公開 URL が存在しない。
- ビューア設定はインストールされた Doconut バージョンの公式ドキュメントから取得している。
- 隠しアクションには保護されたサーバーエンドポイントがある。
- 一時データには明確なクリーンアッププロセスが定義されている。
- 監査ログはドキュメント内容やシークレットを含まない。
- 認可されていない直接リクエストはテストでカバーされている。
- エラーレスポンスは内部ストレージ情報を露出しない。
- 製品コピーは絶対的なコピー防止を主張しない。
Where Doconut Fits
Doconut は .NET アプリケーション内の埋め込みビューイング層を提供します。アプリケーション側は ID、認可、権限、ストレージ、保持、監査、そして「閲覧専用」約束の真実性を担保します。
Doconut .NET ドキュメントビューア SDK をセキュリティ要件と代表的なドキュメントで評価してください。サポートされる構成は推測されたソースコードではなく、公式リソース (https://doconut.com/en/download) を使用して取得してください。
Conclusion
閲覧専用ドキュメントワークフローはディフェンス・イン・デプス設計であり、単なるブールフラグではありません。元ファイルを保護し、すべての要求を認可し、閲覧とダウンロード権限を分離し、サポートされるビューア設定を検証し、アクセスを監査し、インターフェイスバイパスを直接テストしてください。これらの制御が整えば、Doconut は埋め込みドキュメント体験を提供し、ASP.NET アプリケーションがその周辺のセキュリティポリシーを実施できます。