【WP/Azure for ITPro】Windows Phone から Windows Azure AppFabric ACS を使用する

※この投稿は Windows Azure Advent Calender に参加しています

Windows Phone で Windows Azure AppFabric Access Control Service からセキュリティトークンを受け取るにはためには、面倒なコードを書く必要があります。でも安心してください。うってつけのライブラリがあります。

必要なソフトウェアは以下の2つです。

Windows Phone SDK は Windows Phone アプリの開発環境なので、ここでの説明はよいでしょう。

■Windows Phone 用 ACS コントロールの準備

重要なのは、Windows Azure Platform Training Kit(WAPTK) です。WAPTK を解凍すると、C:\WAPTK 配下に自習用のラボファイルが作成されます。この中に、Windows Phone 用のライブラリが用意されてます。

以下のフォルダが、Windows Phone 用の ACS用ライブラリです。

C:\WAPTK\Labs\ACS2andWP7\Source\Assets\SL.Phone.Federation

Visutal Studio 2010 Express for Windows Phone(Windows Phone SDK をインストールすると一緒にインストールされます)で、上記フォルダの直下にある SL.Phone.Federation.csproj を開いてください。

開いたらソリューションエクスプローラーでプロジェクト名を右クリックし、「Windows Phone 7.1 にアップグレード」を選択します。これにより、Windows Phone 7.1 OS に合ったプロジェクトに変換されます。

imageimage

ソースは何もいじらずに、ビルドしちゃいましょう。

ビルドした結果が、C:\WAPTK\Labs\ACS2andWP7\Source\Assets\SL.Phone.Federation\Bin\Debug の下に、SL.Phone.Federation.dll というファイル名で作成されます。

これは後で使います。

■ AppFabric ACS の準備

Windows Azure の管理コンソールから、AppFabric ACS 管理コンソールを開きます。

もし名前空間を作成していなければ、[新規作成] をクリックして作成してください。作成した名前空間は後から使用するので覚えておいてください。

image

名前空間が作成できたら、作成した名まえ空間を選択し「アクセス制御サービス」をクリックします。

名前空間の環境設定画面が開くので、はじめに ID プロバイダーを選択します。今回は、Google と Windows Live を使用することにしましょう。

image

次に、「証明書利用者アプリケーション」をクリックしてください。

[追加]ボタンをクリックし、必要な情報を埋め込みます。今回は以下のように指定しました。

image名前:testapp

領域(Realm):uri:techfielders

戻り先URL:https://tf.com/

トークン形式:SWT

 

上記の画面で重要なのが、領域です。この値は後からアプリに埋め込むので間違えないでください。uri: 以降は適当な値を指定して大丈夫です。uriを指定する以外に、https://tf.com/ 等アプリのURLで指定することも可能です。もしアプリケーションを作成しているならば、それに合わせたURIを指定しますが、今回は作成していないので適当に指定しました。動作検証上は何の問題もありません。

戻り先URLも適当な値で大丈夫です。この値はセキュリティトークンの発行先となりますが、これを指定しないとセキュリティトークンは発行されません。

トークン形式は、今回はSWT(Simple Web Token)を選択しました。

次に規則グループを作成します。

管理画面の左側のメニューで「規則グループ」をクリックしてください。

[追加]をクリックすると規則グループの名前を入力する画面が表示されるので、testrule などと適当に入力して[保存]をクリックします。

以下の画面が表示されたら、[生成]をクリックします。

image

以下の画面で IDプロバイダーを選択して、「生成」ボタンをクリックすると、ルールが自動的に生成されます。

image

最後に、必ず「保存」してください。

image

もう一度「証明書利用者アプリケーション」を開き、下のほうにある「規則グループ」で先ほど作成したルールを選択し、保存します。

image

最後に、トークンを署名するためのキーを作成します。

管理画面の左側のメニューから「証明書およびキー」をクリックしてください。

以下の画面が開くので、対称キーを選択して、キーを生成します。このキーを使用してセキュリティトークンを暗号化します。

image

最後に保存してACSの設定は完了です。

後で以下の2つの情報を使用します。

  • 作成した名前空間(ここでは testapp)
  • 領域(ここでは uri:techfielders)

■Windows Phone から ACS にアクセスするアプリの作成

Visual Studio を起動し、[新しいプロジェクト」を選択し「Silverlight for Windows Phone」を選択してください。

テンプレートの種類は「Windows Phone アプリケーション」でよいでしょう。

プロジェクトの名前は何でもOKです。

プロジェクトが開いたら、「参照の追加」で先ほど作成したライブラリを読み込みましょう。今回はこれ以外に追加するライブラリはありません。

image

コードを細かく解説する時間とスペースが無くて恐縮なのですが、以下にサンプルプロジェクトをアップロードしてありますので参考にしてください。ライブラリも含めてあるので、ひとまずこのプロジェクトだけでテストすることが可能です。

サンプルプロジェクト(ライブラリ含)

1点だけ、ACS の環境に合わせて変更しなければならないのが App.xaml です。

App.xaml の Application.Resource に、ACS の名前空間(Namespace)と領域(Realm)を指定している部分があります。ここは先に作成した ACS の環境に合わせて修正してください。

image

以上を修正して実行すれば以下のように IDプロバイダーの選択画面が開きます。

image

グーグルを選択すれば、グーグルのモバイルログオン画面が開きます。

image

正しく認証されると、以下のようにSWTがメッセージボックスで開くようにしてあります。

image

OKをクリックすると、クレームタイプとクレームの値を表示します。

image

是非試してみてください。