WebサイトからMeshサービスへアクセスするために、今回はWindows Live ID Delegated Authentication(委任認証)という仕組みを利用します。MeshサービスへアクセスするにはユーザーのWindows Live IDアカウント情報が必要ですが、今回作成するWebサイトのように第3者のWebサイトへアカウント情報を提供することはできませんよね。このような場合に用意されている認証の仕組みが委任認証です。
委任認証を利用すると、ユーザーはマイクロソフトのサーバー上にあるWindows Live ID承認サービスを利用して、特定のWebサイトに対してユーザーデータのアクセス許可を設定できます。Webサイトはユーザーの許可により承認トークンと呼ばれるアカウント情報とは関連性のない文字列を受け取ることができます。この承認トークンを使用してLiveサービス上のデータアクセスを行います。
Windows Live ID委任認証の内容は、「使ってみよう! Windows Live SDK/API」の第14回と15回に紹介しています。扱っているLiveサービスが異なるため若干内容に違いがありますが、今回の内容の理解の助けにはなると思いますので併せて参照してください。
Webサイトの登録
最初にAzure Services Developer PortalでWebサイトの登録(プロジェクトの作成)を行います。第7回でMesh-enabled Webアプリケーションのプロジェクトを作成したときのように、新たにプロジェクトを作成します。その際に、「Create Live Framework-enabled Web site」を選択します(図1)
Visual Studio 2008(または無償のVisual Web Developer 2008 Express Edition)を使用してWebサイトプロジェクトを作成します(図3)。メニューのファイル、新規作成からWebサイトを選択します。今回扱うのはWebアプリケーションプロジェクトではなくWebサイトプロジェクトですので注意してください。
Live Meshフォルダに対して読み取りのみの操作が必要な場合は、「LiveMeshFolder.Read」と指定します。この場合は、LiveMeshFolderがオファー、Readがアクションです。複数のオファーとアクションを指定する場合は「,」で区切ります。同一のオファーを複数指定することはできません(「LiveMeshFolder.Read,LiveMeshFolder.Write」と指定するのではなく、LiveMeshFolder.Fullを使用する)。
pl
WebサイトのプライバシーポリシーのURLを指定します。必ず指定する必要があります。
app
アプリケーション検証トークンと呼ばれる文字列を指定します。Windows Live ID承認サービスがWebサイトを識別するために使用します。トークンの生成には暗号化処理などが必要ですが、今回はWindows Live ID Delegated Authentication SDKにあるライブラリを利用し、その処理内容までは説明しません。詳しい生成方法は、「使ってみよう! Windows Live SDK/API」第14回を参照してください。
承認要求URLの作成には、Windows Live ID Delegated Authentication SDKを使用します。Download CenterからSDKダウンロードします。SDKは多様なプログラミング言語のものが用意されています。本連載ではVB.NETのものを使用します。Live Framework発表以前からある委任認証のためのライブラリなため、少し変更して使用する必要があります。
Windows Live ID Delegated Authentication SDKにあるWindowsLiveLoginクラスのGetConsentUrlメソッドを使用するとweb.configの設定値から承認要求URLを作成できます。メソッドの引数はオファーとアクションの文字列です。ただし、appUrlパラメータに対応していないなど不都合があるため、メソッドの戻り値を加工しています。承認要求URLのファイル名がDelegation.aspxの固定値になっているため削除し、appUrlパラメータを追加しています。クラスをLive Frameworkに対応させる方がスマートですが、今回はこのようにしています。