(ひっそりと?)Windows Azure対応のサンプルアプリケーションが公開されています。
作者のブログ(https://www.wadewegner.com/)でも紹介されていないところを見ると、まだ手を入れるつもりなのかも知れませんが、一応v1.0.0ともなっていますし、それなりに便利なので紹介します。
BlobShare Sample
https://blobshare.codeplex.com/
このサンプルはファイル共有アプリケーションで、Azure StorageやSQL Azureといったストレージサービスを利用し、ACS(Access Control Service)を活用して様々なIDプロバイダーでログインすることができます。
管理者であれば(管理者が別のアカウントを管理者として追加することも可能)、ファイルをアップロードしたり他のユーザーをアカウントに追加して招待メールを出すことも可能です。
逆に招待されていないユーザーはIDプロバイダーで認証されていてもアクセスすることはできません。典型的な認証と認可の分離のシナリオであり、クレームベース認証の技術を活用しています。
なぜこのサンプルの存在を知ったのかと言うと、社内事情で恐縮ですが突然以下のようなメールが流れてきたからです。
これがBlob Share自体を使った招待メールと知ったのは後からでしたが、既に限られたメンバー間でファイル共有を実際に行っていたとのことです。
セットアップ方法については、Blob ShareのGetStarted(https://blobshare.codeplex.com/wikipage?title=Get%20Started)及びDeployment(https://blobshare.codeplex.com/wikipage?title=Deployment)で解説されていますので割愛します。
要はConfiguration.xmlを配置場所(Compute エミュレーター or Azure)に合わせて設定するだけです。
IDプロバイダーとしては、Live ID、Yahoo ID、Google ID、そしてFacebook IDが利用できます。
ログインすると、こんな感じの初期画面が表示されます。
上部にある[Blobs] リンクをクリックすると、今までアップロードしたファイルがリストアップされます。
新たにファイルをアップロードするにはリストの右上にある[Upload] リンクをクリックします。
こちらがファイルのアップロード画面(Multiple file upload : 複数ファイルを一度にアップロードするオプションのほう)です。
残念ながらドラッグ&ドロップには対応していません。
さて、これでファイルの共有がなされたと思い、招待されたユーザーがログインすると・・・
何も入っていません!?
実は管理者側がファイルに対するパーミッションを設定する必要があります。
この画面でパーミッションを付与するアカウントと有効期間をを選択して、[GRANT] ボタンを押します。
(あるいはアカウントに対してRoleを定義して、Roleごとパーミッションを付与することもできます。)
今の画面でパーミッションを付与されたアカウントが表示されていたら、今度はうまく行くはずです。
Blob Shareサンプルアプリケーションのアーキテクチャは以下のようになっています。
認証はACSで、認可はSQL Azureで行われ、ファイル本体はAzure Blobストレージに格納されるという設計になっています。
社内限定のバージョンはADFSサポートが追加され、Active Directory環境でのシングルサインオンに対応していました。
そのうち外部向けにもWS-Federation対応版がサポートされるかも知れませんね。
普通サンプルアプリケーションというと、あくまでも説明のための実装ですが、このように“ドッグフードを食べる”形で提供されるサンプルには実用性向上への期待が膨らみます。