いしぐめも

プログラミングとかしたことを書きます。

Personium上のファイルを操作(ダウンロード・アップロード・アクセス制御)してみよう

本記事では、PersoniumのBox上のファイルを操作する方法をコードサンプルと共に書いてみます。

CLI

PersoniumのBoxは、WebDAVという、HTTPを拡張した仕様によってファイルの読み書きを行うことができます。

WebDAV」という言葉自体、個人的には馴染みがなかったんですが、ファイルストレージ系クラウドサービスで使用されていたり、実は世の中に浸透しているのかもしれません。HTTP/HTTPSで読み書きが行われるので、HTTPプロキシをそのまま流用できたり、というのが便利だったりするのかな?と思います。

PersoniumもWebDAVという共通仕様を使用することができるので、世の中のライブラリを使用することもできます。が、今回は例のためにHTTP通信のAPIを使用して使ってみるというのを示してみたいと思います。

ファイル一覧の取得(PROPFIND)

PROPFIND メソッドは指定されたURIに対応するリソースの属性を取得するのに使用します。ファイルに対して行えば、ファイルの属性を取得できますし、コレクション(≒ディレクトリ)に行えば、それに含まれるリソース一覧と属性を取得することができます。

ファイルのアップロード(PUT)

ファイルの取得(GET)

アクセスコントロールの設定(ACL

Personiumのキモとも言える、アクセスコントロール設定のやり方です。ここはWebDAVの仕様に基づいてXMLを組み立てる必要があります(すごくつらい)




GUI

Personiumでは、セルを管理するWebアプリケーションを公開しています。このツールを利用することで上記で説明したようなファイルのアップロード・アクセスコントロールAPIの実行などを画面を通して行うことができます。

github.com

本来、このツールを動作させるためには、Personiumのセル上に配備される想定ですが、ただの静的なWebアプリなのでフォークしてGitHub Pagesにて公開しました。こちらを利用しても同じことができます↓

Personium Unit Manager

ログイン

上記リンクをクリックすると、ログイン画面が開きます。

f:id:yoh1496:20210910200847p:plain
ログイン画面

ここに以下のような情報を入力して、ログインします。管理者からセルの払い出しを受けた際にもらった情報を入力してください。

# 項目 説明
1 セルURL ログインする先のセルURL (例:https://cell.pds.example.com/
2 アカウント名 セル内のアカウント名 (例:account)
3 パスワード セル内のアカウントパスワード (例:XjEd6Ucr)

※ここで権限の弱いロールを付与されたアカウントでログインすると以降で説明する操作ができない可能性があります

ボックス作成・選択

ログインすると最初にエクスプローラーのような画面が開き、ボックス一覧が表示されます。デフォルトではセルのメインボックスが [main] という名前で一覧に表示されます。

この画面では、ボックス名をクリックしてボックスの中身を見たり、「Create Box」ボタンから新しいボックスを作成したりすることができます。

f:id:yoh1496:20210910201909p:plainf:id:yoh1496:20210910202220p:plain
ボックス一覧・ボックス作成

ボックス作成ダイアログには「URL to identify the schema of this application」と書かれたテキスト入力がありますが、そこはクライアント認証(特定のクライアント以外に読み書きを認めない機能)を利用するためのURL入力箇所ですので、空白のままでも大丈夫です。

ボックスへファイルのアップロード

ボックスを開くと、内容が表示されます(デフォルトは空です)。そこで「Upload」ボタンをクリックするとファイル選択画面が開きますので、そこでファイルを選択すると任意のファイルをアップロードすることができます。

f:id:yoh1496:20210910202819p:plainf:id:yoh1496:20210910203119p:plain
ファイルのアップロード・アップロードされたファイルのURL確認

アップロードされたファイル、名前の横のチェックボックスをクリックすることでファイル情報を確認することができ、外部からアクセスする際に使えるURLを確認することができます。URLは <セルURL><ボックス名>/<ファイル名> という形式になっているはずです。

ファイルのアクセスコントロール設定

ファイルのアクセスコントロール設定を変更するには、操作したいファイルのチェックボックスにチェックを入れた状態で、「ACL Settings」横の編集ボタンをクリックします。

f:id:yoh1496:20210910203454p:plain
ACL Settings横の鉛筆マークをクリック

ここで「付与する対象」と「付与する権限」を確認し、チェックマークを入れ「Save」を押します。(例では anyoneread を与えてみます。注意:この設定を行うと全ユーザー(未認証含む)に対して公開されます

f:id:yoh1496:20210910203830p:plain
権限の付与

そしてファイルのURLにアクセスしてみると、、、以下のようにアップロードしたコンテンツが表示されます。

f:id:yoh1496:20210910204232p:plain
アップロード・アクセスコントロール設定したファイルが表示される

終わりに

パーソナルデータストアなのに、ファイルをどうやってアップロードするか?といった内容の記事が全然検索でヒットせず、絶望したので記事を書いてみました。Personiumのボックスは、Webサイトの静的コンテンツを配信するのにも使用可能なので、Webアプリ公開にも使用できます。Webアプリ配信元のセルURLを使用して、クライアント認証を行う「Personiumアプリ」というものもありますが、それについてはまた後日記事にしたいと思います。

感想・質問・改善提案、なんでもウェルカムですので、コメントお願いいたします!