アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » 使ってみよう! Live Framework » 第11回 Live Framework-enabled Webサイト(2/2)

使ってみよう! Live Framework

第11回 Live Framework-enabled Webサイト(2/2)

はじめに

今回は前回に引き続き,通常のWebサイトからLive FrameworkとWindows Live ID Delegated Authentication(委任認証)を利用してMeshサービスへアクセスする方法についてです。Webサイトは,ユーザーにユーザーデータへのアクセス許可を承諾してもらうことで始めてMesh上のデータへアクセスが可能になります。前回は,許可の承諾を行う承認要求ページ(図1)への遷移まで紹介しました。今回は承認情報を受信し,Meshサービスへアクセスします。

図1 承認要求ページ

図1 承認要求ページ

開発環境

承認情報を受信するにあたり,前回も触れたとおりLiveサービスからWebサイトへアクセスできる必要があります。つまり,Visual Studioで使用するASP.NET開発サーバーではWebサイトのデバッグができません。今回の内容を確認するためには,リモートのWebサーバーへWebサイトを配置したり,IISを開発用PCへインストールし外部からアクセスできるようネットワークの設定をしたりする必要があります。以下に準備すべき開発環境について簡単に説明します。

セキュリティに気を付ける必要がありますが,個人の開発では開発PCをWebサーバーとして公開する方法がPCも1台で済み手軽な方法でしょう。Windows Vistaの場合,コントロールパネル内のプログラムから「Windows機能の有効化と無効化」よりWebサーバー機能を持つIISをインストールできます。

次にWebサイトのドメインについてです。Liveサービスは「gihyo.jp」などのような,ドメインを使用してWebサイトにアクセスするため固定のIPアドレスを所有している必要はありません。ダイナミックDNSサービスなどを利用してアクセスできるようにしましょう。開発PCをWebサーバーとした場合,ドメインを使用して自身のWebサイトにアクセスすることは通常できません。そのため,hostsというシステムファイルを書き換え,自PCから対象ドメインへアクセスした場合はlocalhost(127.0.0.1)にアクセスするよう設定します。hostsファイルは「%SystemRoot%\System32\drivers\etc」にあります。管理者権限でメモ帳などのエディタから開き,以下の行を追加します。ドメインはAzure Services Developer Portalで登録したWebサイトのドメインです。

127.0.0.1    example.jp

これ以外にもルーターの設定などを行い,Liveサービスを含む外部からドメインにより開発PC上のWebサーバーへアクセスできるようにし,開発PC・外部どちらからもドメインによりWebサーバーへアクセスできるようにします。

承認情報の受信

承認要求ページ上でのユーザー操作により,指定したページアドレスにLiveサービスから承認結果がHTTP POSTメソッドを用いて送られてきます。受信するページは,Azure Services Developer PortalでWebサイトを登録したときにReturn URLの値として指定したアドレスです。また,承認要求のURLのruパラメーターの値としても指定していました。

本連載では,「delauth-handler.aspx」という名前のページにしていました。このページをプロジェクトに追加します。プロジェクトに「新しい項目の追加」からWebフォームを選択します(図2)。

図2 Webフォームの追加

図2 Webフォームの追加

このページで承認情報を受信し,その内容により適切なページへリダイレクト(今回はDefault.aspxとします)するよう処理します。

承認情報

Windows Live ID委任認証の仕組みとしては,ユーザーがアクセス許可をした場合/キャンセルした場合とも,許可またはキャンセルしたという結果がLiveサービスより送られてきますが,Live Framework CTPではユーザーがキャンセルした場合,情報は何も送信されないようです。ユーザーがアクセス許可を承諾した場合にLiveサービスから送信されるPOSTデータのパラメータは次の4個です。

ResponseCode

ユーザーが,アクセス許可の承諾またはキャンセルを示す値です。承諾したときの値は「RequestApproved」です。

ConsentToken

承認トークンと呼ばれる文字列です。このトークン内は,さらに複数のパラメータに分割でき,ユーザーデータのアクセスに必要な情報が含まれています。

action

ユーザーが行った操作を示す値です。承認要求の完了を示す「delauth」という値になります。

appctx

Webサイトが必要に応じて利用するための値です。承認要求時のURLに「appctx=…」というようにパラメータを指定しておくと,その値が返ってきます。本連載では使用していません。

承認トークン

承認トークンは暗号化されています。復号化すると,次の値が含まれています。

  • 委任トークン
  • 更新トークン
  • セッションキー
  • オファーとアクション
  • 委任トークンの有効期限
  • Location ID

それぞれの内容はわからないと思いますが,どれも委任認証に出てくる単語ですので当然です。ただし,オファーとアクションは前回出てきましたね。この中で最低限必要なものは委任トークンと呼ばれる文字列です。

委任トークンは,Meshサービスへ接続する際に認証に使用します。本連載ではこれまでにMeshサービスへ接続する(Live Operating Environmentへ接続する)際にWindows Live IDアカウント情報を使用していましたが,委任トークンを使用した接続も可能です。

本記事では,承認トークンの復号化と各パラメータの取得はWindows Live ID Delegated Authentication SDKに含まれるクラスライブラリに任せます。承認トークンの復号化や各パラメータの詳しい内容を知りたい方は「使ってみよう! Windows Live SDK/API」の第15回にて扱っていますので,そちらを参照してください。

委任トークンの取得

それでは,Liveサービスから送信された情報から,委任トークンを取得するコードを書いていきましょう。委任トークンを取得後は,Cookieに格納しDefault.aspxへリダイレクトします。Default.aspxではCookie情報を確認し,委任トークンがある場合はMeshサービスへのアクセス処理へ,ない場合は前回の内容の承認要求ページへのリンクを表示するようにします。

delauth-handler.aspx.vbに以下のように処理を記述します。

Imports WindowsLive
Partial Class delauth_handler
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Request("action") = "delauth" Then
            ' アクセス許可の承諾処理が完了している場合

            ' 承認トークンの取得
            Dim login = New WindowsLiveLogin(True)
            Dim consentToken = login.ProcessConsent(Request.Form)

            ' 委任トークンを Cookie へ格納
            Dim cookie = New HttpCookie("consentToken")
            cookie("delToken") = consentToken.DelegationToken
            cookie.Expires = consentToken.Expiry.ToLocalTime
        End If

        ' Default.aspx へリダイレクト
        Response.Redirect("Default.aspx")
    End Sub
End Class

ページが読み込まれた時,POSTデータのactionパラメータの値がdelauthのとき承認要求ページから遷移し,アクセス許可が承諾されたと判断しています。委任トークンは前述の通りLive ID Delegated Authentication SDKのクラスを利用して取得しています。委任トークンには有効期限があります。コードではこれを利用してCookieの有効期限の設定も行っています。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズ(現 株式会社ミレニアムシステムズ)にプログラマとして従事。趣味はプログラミング。好きな言語はVisual Basic。

URL:http://katamari.jp

トラックバック

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス