<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Access-Control on デジタルアーカイブシステムの技術ブログ</title><link>https://tech.ldas.jp/ja/tags/access-control/</link><description>Recent content in Access-Control on デジタルアーカイブシステムの技術ブログ</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 27 Apr 2026 22:00:00 +0900</lastBuildDate><atom:link href="https://tech.ldas.jp/ja/tags/access-control/index.xml" rel="self" type="application/rss+xml"/><item><title>アクセス制御付き IIIF デジタルアーカイブの構築 — Cloudflare Access で守る Cantaloupe + S3 + Elasticsearch + Next.js</title><link>https://tech.ldas.jp/ja/posts/access-controlled-iiif-archive-cloudflare-cantaloupe/</link><pubDate>Mon, 27 Apr 2026 22:00:00 +0900</pubDate><guid>https://tech.ldas.jp/ja/posts/access-controlled-iiif-archive-cloudflare-cantaloupe/</guid><description>&lt;blockquote>
&lt;p>本記事は生成 AI と共同で執筆しています。事実関係は可能な範囲で公式ドキュメント等と照合していますが、誤りが含まれている可能性があります。重要な判断を行う前にご自身でも一次情報をご確認ください。&lt;/p>&lt;/blockquote>
&lt;h2 id="背景一般公開できない画像を限定配信したい">背景：「一般公開できない画像を限定配信したい」&lt;/h2>
&lt;p>歴史資料のデジタルアーカイブには、&lt;strong>著作権・肖像権・所蔵者契約・倫理的配慮などの理由で一般公開できない画像が一定割合含まれる&lt;/strong>のが普通です。一方で、&lt;/p>
&lt;ul>
&lt;li>研究者・編集スタッフの内部閲覧&lt;/li>
&lt;li>限定された協力機関への提供&lt;/li>
&lt;li>校閲・選定作業&lt;/li>
&lt;/ul>
&lt;p>といった用途では、&lt;strong>「公開はしないが、IIIF の利便性は使いたい」&lt;/strong> というニーズがあります。具体的には：&lt;/p>
&lt;ul>
&lt;li>高解像度ビューア（OpenSeadragon / Mirador）でディテール確認&lt;/li>
&lt;li>IIIF Presentation API の manifest を介した IIIF 互換ツール（認証済みセッション内）での閲覧&lt;/li>
&lt;li>永続的な URL での参照・引用（ホスト名・経路の継続を前提）&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>&lt;strong>注意&lt;/strong>：本記事の構成は &lt;strong>同一組織内・認証済みブラウザセッション&lt;/strong> での IIIF 利用を前提としています。外部ホストからの非インタラクティブな相互運用（クローラ・収集ボット等）には &lt;a href="https://iiif.io/api/auth/2.0/">IIIF Auth API 2.0&lt;/a> の実装が別途必要です（&lt;a href="https://tech.ldas.jp/ja/posts/access-controlled-iiif-archive-cloudflare-cantaloupe/#%e5%bf%9c%e7%94%a8iiif-auth-api-20-%e3%81%b8%e3%81%ae%e6%8b%a1%e5%bc%b5">応用：IIIF Auth API 2.0 への拡張&lt;/a> を参照）。&lt;/p>&lt;/blockquote>
&lt;p>公開コーパスなら CloudFront + S3 で済むのですが、&lt;strong>「アクセス制御」と「IIIF」を両立させる構成&lt;/strong>には少し工夫が要ります。本記事はその実装記録です。&lt;/p>
&lt;h2 id="構成">構成&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> ┌──────────────┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ユーザー ──TLS──▶ Cloudflare │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ ┌────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ Access │── 認証ゲート（Email OTP / SSO）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ └────────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ ┌────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │Tunnel │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ └────┬───┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───────│───────┘
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ outbound 接続
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ┌───────┴────────────────────────────┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ Origin（VPS / 学術クラウド等） │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ ┌────────────┐ ┌──────────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ cloudflared│──│ Next.js (web)│──┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ └────────────┘ └──────────────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ ▼ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ ┌──────────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ │Elasticsearch │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ └──────────────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ ▲ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ └─path:/iiif───┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ ┌───────▼──────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │ Cantaloupe │────┼─→ S3 互換
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ └──────────────┘ │ ストレージ
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └────────────────────────────────────┘
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>役割分担&lt;/strong>：&lt;/p></description></item></channel></rss>