不透明セッショントークン
定義
保持者に意味を持たない識別子で、サーバ側の状態を参照するものであり、記述するものではありません。そのためクライアントはそれを読み取ったり、変更したり、隣接する値を推測したりできません。
対照的なのは透明な識別子です。ビューアが /view?file=/records/2026/patient-4417.pdf のようにドキュメントにアクセスすると、クライアントはディレクトリ構造や命名規則、そして患者4416が存在する可能性があることまで知ってしまいます。整数をインクリメントすることは最も古いドキュメント漏洩バグであり、今日でも書かれ続けています。
不透明トークンはこのカテゴリ全体を排除します。サーバはトークンからドキュメントへのマッピングを保持し、クライアントは解釈できない文字列を保持します。列挙できる対象がなくなるため、列挙は不可能になります。
不透明であることは無害という意味ではありません。トークンは参照先へのアクセスを許可し続けるため、短命な認証情報として扱うべきです。ログに記録せず、分析に使用される URL に入れず、ビューの存続期間を超えてクライアント側に永続化しないでください。
Doconutで
Viewer.OpenDocumentAsync() は、ページ取得のために JavaScript ウィジェットが提示する不透明トークンを返します。これはドキュメント識別子ではなく、決してログに記録したり、ビューア以外でクライアント側にキャッシュしたり、セッション間で再利用したりすべきではありません。