Windows Azure AppFabric ACS Walkthrough

CodePlexにある、Access Control Service Samples and Documentationが素晴らしい感じなので、参考になればと思いざっくり訳してみました。(適当な翻訳なのと、一部画像を追加したりしています。気になる方(及び最新情報)は原文を見てください。)

このチュートリアルではWindows Azure AppFabric ACSのサービスネームスペースと、ASP.NET RelyingPartyアプリケーションを新規作成します。
このチュートリアルの実施前に前提条件を確認ください。

 

Windows Azure AppFabric ACSポータルへのアクセス

1) ブラウザでWindows Azure開発者ポータルに接続します。認証画面が表示されるので、Live IDを入力しサインインします。もしWindows Azureのサブスクリプション(契約)が無い場合はサインアップから作成することが出来ます。サインイン後、以下の画面が表示されます。

11060700

 

サービスネームスペースの作成

2) 左パネルのメニューから「Service Bus, Access Control & Caching」をクリック後、「AppFabric」-「Access Control」を選択します。

11060702

3) リボンメニューから「New Namespace」メニューをクリックして「Create a new Service Namespace」ダイアログを表示させます。

3-a. 「Namespace」欄に作成する、一意なネームスペースを入力します。この値は”accesscontrol.windows.net”ドメインのサブドメインになります。例えば、”homuhomu”で作成した場合、ACS Service Namespaceのエンドポイントは”https://homuhomu.accesscontrol.windows.net”といったURIを持つことになります。

3-b. 「Contry/Region」ドロップダウンリストからリージョンを選択します。ここで指定したリージョンにサービスネームスペースがホストされます。

3-c. 「Create Namespace」ボタンをクリックし、ダイアログを閉じると、しばらくした後にサービスネームスペースが作成されます。Status列がActiveになれば完了です。

11060703

作成後↓
11060704

 

ACSの構成

4) サービスネームスペース一覧から作成したネームスペースを選択し、リボンメニューの「Manage > Access Control Service」をクリックします。(ACS 管理ポータルはまだAzure開発者ポータルに統合されていないので別のページとして表示されます。)

ACS管理ポータルではサービスネームスペースを管理するための各種リンクが用意されています。IdPの追加、RelyingParty(証明書利用者)の構成、ルールやルールグループの定義、信頼するRelyingPartyとの接続に関する資格情報やACSをアプリケーションに統合する方法などが記載されてます。

11060705

 

IDプロバイダ(IdP)の追加

5) 最初に、アプリケーション用のIdPをセットアップします。左パネルナビゲーションから「Identity providers」メニューを選択します。選択後、以下の画面が表示されます。

11060706

6)Add」メニューをクリックし、「Google」を選択して「Next」ボタンをクリックします。次の画面では、利用者に表示させるログインリンク名と画像へのURLを入力します。この画像はログオン画面でGoogleのイメージを描画するときに使用されます。この値はオプションですので、このチュートリアルではスキップして「Save」ボタンをクリックします。

1106070711060708

7) 同じように「Add」メニューをクリックし、「Yahoo!」を選択して「Next」ボタンをクリックします。次の画面では、利用者に表示させるログインリンク名と画像へのURLを入力します。この画像はログオン画面でYahoo!のイメージを描画するときに使用されます。この値はオプションですので、このチュートリアルではスキップして「Save」ボタンをクリックします。

1106070911060710

登録後↓
11060711

8) 左パネルメニューから「Home」リンクをクリックしてメイン画面に戻ります。

 

Relying Partyアプリケーションのセットアップ

9) 次に、Relying Partyアプリケーションをセットアップします。ACSではRelying Partyアプリケーションはシステムに含まれるあなたのアプリケーションを指します。あなたのアプリケーションのURLやトークン書式設定、トークンのタイムアウト、トークンの署名オプションや暗号化オプションを定義します。

9-a. 左パネルメニューから「Relying party applications」を選択します。

9-b. 「Add」リンクをクリックします。

11060712

9-c. 「Name」にアプリケーションの表示名を入力します。(例:Your Web Application)

9-d. 「Realm」と「Retrun URL」にアプリケーションのURLを入力します。(例:http://localhost:7777/ )

9-e. 「Token format」コンボボックスから「SAML 2.0」を選択します。

9-f. 他の項目は既定値のままで、「Save」ボタンをクリックしてフォームを閉じます。

1106071311060714

追加後↓
11060715

9-g. 左パネルメニューから「Home」リンクをクリックしてメイン画面に戻ります。

 

ルールの作成

10) Relying Party作成後、ACSがアプリケーションにトークンを発行する際のルールを定義することができます。

10-a. 左パネルメニューから「Rule Groups」リンクを選択します。

10-b. 先ほど作成したRelying Partyアプリケーション名の「Default Rule Group for Your Web Application」リンクを選択します。

10-c. ページ中部に「Generate」リンクがあるのでクリックします。

11060716

10-d. クリック後表示される画面にて、IdPの一覧のオプションをそのままにして「Generate」ボタンをクリックします。

11060717

ACSは上記画面で選択したIdPの構成を基に、自動的にすべての値についてパススルーのルールを生成します。ルール生成後、以下のような画面になります。

11060718

 

11)Save」ボタンをクリックしてルールグループページを保存します。保存後、左パネルメニューから「Home」リンクをクリックしてメイン画面に戻ります。

 

Application Integrationセクションの表示

12) 左パネルメニューから「Application integratin」リンクをクリックします。あなたのネームスペースで有効な、ユニークなACSのURIが表示されます。後で利用するのでこのページの情報を控えるか、表示しておきましょう。

11060719

 

Visual Studio統合

13) 次に、Visual Studio 2010 を起動します。

14) 「ファイル」-「新規作成」-「プロジェクト」メニューを選択し、「Web」-「ASP.NET MVC2 Webアプリケーション」を選択します。

11060720

15) 「単体テストプロジェクトの作成」ダイアログでは、今回はサンプルですので「単体テスト プロジェクトを作成しない」を選択します。

ACSで定義したRelying Party(localhost:7777)とあうようにVisual Studio開発サーバー(Cassini)を構成する

16) ソリューションエクスプローラからプロジェクトのプロパティを表示し、「Web」タブを開きます。Visual Studio開発サーバーの「ポートを指定」を選択し、ポート番号に「7777」を入力します。
※ここで指定する値はACSで設定したRelying Partyとあわせる必要があります。

11060721

 

アプリケーションを実行してみる(ACSは使用しない)

17) F5キーでアプリケーションをデバッグ実行してみます。ブラウザが立ち上がり、空のMVCプロジェクトなアプリケーションが表示されれば問題ありません。

 

ACSへの参照を追加

18) ではACSとRelying Party(このMVCアプリケーション)との間の信頼をセットアップします。プロジェクトを右クリックしてコンテキストメニューから「Add STS Reference」(またはSTS参照の追加)メニューを選択します。

11060722

 

STSウィザードへ情報の入力

19)アプリケーション URI」(Application URI)にこのアプリケーションのURLを入力します。この例では”http://localhost:7777/”を入力し、「次へ」(Next)ボタンをクリックします。
※ 末尾のスラッシュはRelying Party用の値として重要なので注意。

11060723

20) 入力されたURLがSSL(HTTPS)でない場合、警告が表示されます。セキュリティで保護するようにSSLを使用するのが望ましいですが、このチュートリアル(サンプル)ではHTTPを使用するので「はい」をクリックして続行します。

11060724

21) 次に、「既存のSTSを使う」(Use Existing STS)をラジオボタンから選択します。「STS WS-Federationメタデータのドキュメントの場所」には、先ほどのACS管理ポータルのApplication Integrationページにある「WS-Federation Metadata」の値を入力し、「次へ」ボタンをクリックします。

1106072511060726

22) ウィザードの残りの項目は既定値のままで「次へ」ボタンで進み、最後に「完了」ボタンでウィザードを完了します。

11060727110607281106072911060730

11060731

 

23) ウィザード完了後、必要なアセンブリ参照の追加(Microsoft.IdentityModel.dll )や、Webサイトで利用するWindows Identity Foundation に関するWeb.configの追記が行われます。

24) Web.configのSystem.web要素以下に <httpRuntime requestValidationMode="2.0"/> を追加します。この設定が無い場合、トークンの検証で例外が発生します。

例外の例:
[HttpRequestValidationException (0x80004005): 危険な可能性のある Request.Form 値がクライアント (wresult="<t:RequestSecurityTo…") から検出されました。]

11060732

Web.configの以下の行の手前に追加します。

<system.web>
  <!–set this value—>
  <httpRuntime requestValidationMode="2.0"/>
  <authorization>
    <deny users="?" />
  </authorization>

11060733

 

アプリケーションを実行してみる

25) ではF5キーでWebアプリケーションをデバッグ実行してみます。

26) 最初にACS管理ポータルで設定したURLにリダイレクトされ、設定したIdPの一覧が表示されます。

11060734

27) ここでは「Google」を選択します。

28) Googleのログインページが表示されるので、Googleの認証情報を入力してサインインします。

11060735

29) サインイン後、ACSへポストバックされ、トークンの検証後Webアプリケーションへリダイレクトされます。

30) Webアプリケーションがログイン状態で表示され、サインイン名にGoogleのアカウントの表示名が表示されていることを確認します。

11060736

※Windows Live、Yahoo!でも認証できることを確認しましょう。但しWindows Liveの場合、表示名が取得できないので空欄になります。

まとめ

Windows Azure AppFabric ACS(v2)を利用すると、簡単に認証処理を外だしすることが出来て便利ですね!
※Windows Azure AppFabric ACSはトランザクション単位で課金がある(10万トランザクションで180円弱)ので、気になる方は注意しましょう。

 

おまけ

  • ACS… Windows Azure AppFabric Access Control Serice
  • Relying Party…証明書利用者
  • IdP…Identity Providers(IDプロバイダー)

Windows Azure AppFabric ACS Walkthrough」への1件のフィードバック

  1. ピンバック: Windows Azure AppFabric ACS でカスタムのサインイン画面を作る « ブチザッキ

コメントを残す