Omeka Sで非公開ファイルを扱う
概要
Omeka Sでは、リソース(アイテムセット、アイテム、メディアなど)単位で公開/非公開の設定を行うことができますが、メディア等に紐づけられた画像などのファイルについては、非公開の設定が適用されていても、ファイルのURLを知っていれば誰でもアクセスすることができます。通常、以下のようなURLになります。
<Omekaのインストールディレクトリ>/files/original/<ハッシュ値>.jpg
メディアに非公開の設定が適用されていれば、このファイルのURLが知られることは稀かと思いますが、「リンクを知っている全員」がアクセスできてしまう状況を避けたいケースがあります。
上記に対応するモジュールとして、「Access」がありました。
本記事では、本モジュールについて簡単に紹介します。
参考: Drupalの場合
Drupalにおいては、Private files
を使って、上記の問題に対応することができました。この実現にあたっては、以下の記事が参考になりました。
ファイルをPrivate files
として登録し、 Access Content や Field Permissions モジュールと組み合わせて、匿名ユーザによるPrivate files
へのアクセスを制限することができました。
Accessモジュールの使い方
本モジュールはIPアドレスによるアクセス制御や Guest モジュールとの組み合わせによる匿名ユーザによるアクセス制御など、多様な設定を行うことができるようです。
今回は、単純な設定として、original
(オリジナル)およびlarge
(オリジナルより小さいサイズの画像)、medium
(ラージよりも小さい画像)などについて、匿名ユーザはoriginal
およびlarge
の画像は閲覧できないが、medium
以下の画像は閲覧できるようにしてみます。
つまり、非ログインユーザは、大きな画像は閲覧できないが、比較的小さな画像のみ閲覧できる環境を構築します。
インストール
通常の方法でインストールできます。
ウェブサーバの設定
この点が少し面倒かもしれません。以下に記載があります。
以下、Apacheの例ですが、.htaccess
ファイルのRewriteEngine On
に後に、以下を追記します。
# Set rule for original and selected derivative files (usually at least large thumbnails).
RewriteRule "^files/(original|large)/(.*)$" "/access/files/$1/$2" [P]
上記は、ドメインまたはサブドメインのルートにOmeka Sがインストールされている場合です。その他の方法でインストールされた場合の設定例についても、上記のマニュアルに記載されています。
上記により、<Omekaのインストールディレクトリ>/files/original/<ハッシュ値>.jpg
などにアクセスすると、<Omekaのインストールディレクトリ>/access/files/original/<ハッシュ値>.jpg
というURLに書き換えられます。
書き換えられた後のURLはOmeka Sが動的に作成するもので、IPアドレスやログイン状態などを考慮して、画像を返却するかを決定するようです。
先に紹介したDrupalにおいては、Public files
がファイルが格納されているパス、Private files
がDrupalが動的に生成するURLになるようなので、このような切り替えをOmeka Sでも実現していることになります。
設定
モジュールのインストール後、以下のような設定画面が表示されます。今回の用途では、全てのチェックを外しておきます。
本モジュールを有効にすることにより、リソースごとにAccess level
を設定できるようになります。今回の用途では、禁止
を与えます。
「いらすとや」さんの画像を利用しています。Access status
がforbidden
になっていますが、ログインユーザは当該画像を閲覧できています。
一方、非ログインユーザで画像を閲覧した際には、鍵のアイコンが表示されるようになりました。オリジナル
画像等にアクセスできていないことが確認できます。
なお、上記の画面の下部の小さい画像は表示されています。これはmedium
を正方形にしたsquare
ファイルです。large
よりも小さい画像で、先ほどのRewriteルールに引っかからないため、通常通りに表示されています。
参考
Amazon S3モジュールなどを使って、Amazon S3にファイルを格納している場合、2024-01-14時点ではうまくいきませんでした。これは以下のTODOに記載がありますが、オリジナルファイルのURLが変わってしまうためです。
Drupalの場合、以下の記事など参考に設定することで、S3に格納したPrivate files
でも正しく動作しました。
Omeka Sは公開を主眼としたシステムであるため、非公開ファイルの取り扱いはDrupalに比べて苦手なようです。これらの特徴を踏まえて、用途に応じて適切なCMSを選択していくのがよいように思いました。
まとめ
Omeka Sで非公開ファイルを扱う一例について紹介しました。他にも様々な設定が可能なようなので、改めて調べてみたいと思います。
他の方の参考になりましたら幸いです。
Discussion