Azure ACS を使用する ASP.NET  MVC Web アプリケーションを作成するメモを記載します。

検証環境は次の通りです

  • Visua Studio 2013 Premium
  • .NET 4.5

参考にしたURLを記載します。

How to: Create My First Claims-Aware ASP.NET Application Using ACS
http://msdn.microsoft.com/en-us/library/gg429779.aspx
External Authentication Services
http://www.asp.net/web-api/overview/security/external-authentication-services

前提として [Azure ACS] Azure Access Control Service を作成するで紹介しているような Azure ACS(Access Control Service) の名前空間が定義済みであることとします。

1. Web アプリケーションプロジェクトの作成

Visual Studio を起動して 新しくプロジェクトを作成します。下図のように ASP.NET Web アプリケーション を .NET Framework 4.5 をターゲットフレームワークに設定して作成します。

新規 ASP.NET プロジェクト ダイアログで 認証の変更 ボタンをクリックします。

認証の変更 ダイアログが表示あsれます。 Azure ACS を使用する場合は 組織アカウント を選択して ドロップダウンリストで 社内 を選択します。社内の認証機関 に Azure ACS 名前空間の WS-Federation メタデータの URL を入力します。WS-Federation メタデータのURLは Azure ACS 管理ポータルの アプリケーション統合の画面で確認できます。

アプリケーションIDは、クレーム認証を行うサイトのURLを設定します。ブランクにすると、開発環境用の設定が自動的に適用され、例えば、https://localhost:44307 が指定されます(ポート番号は環境によって異なります)。今回は ブランクのままにします。 OKボタンをクリックします。

実はこれだkで Visual Studio 側の設定は完了です。

2.証明書利用者アプリケーションの設定

後は、Azure ACSの管理画面で、 設定をします。今回は Visual Studio の組み込みのサーバー (IIS Express) で https://localhost:43307 でサイトを動作する前提で手順の説明をします。証明書利用者アプリケーション以外の使用する認証プロバイダーなどの設定は設定済みの前提で記載します。詳細に関しては別のページをご参照ください。Sitecore Azure の管理ポータルにログインし、Azure ACS の管理画面に移動します。証明書利用者アプリケーションのページに移動して、 追加 リンクをクリックします。

証明書利用者アプリケーションの追加画面が表示されますので、 Azure ACS を使用してシングルサインオンを行う Web アプリケーションの情報を入力します。 名前に アプリケーションの名前を記載します。モードは 設定を手動で入力 を選択します。領域と戻り先 URL に WebアプリケーションのルートのURLを入力します。ACSの設定で IDプロバイダーには Facebook, Windows Live ID, Yahoo!を証できるようにしています。残りは既定値のままで 保存ボタンをクリックします。

規則グループを選択して作成された Sample Web App の既定の規則グループ のリンクをクリックします。

ルールがなにも追加していない状態なので、生成リンクをクリックしてデフォルトの規則を追加します。確認画面が表示されたら 生成 ボタンをクリックしてください。

この画面でさらに詳細な クレームの設定を行えますが、今回は既定で作成されたルールをそのまま使います。

準備完了です。非常に簡単に環境をセットアップできます。

テンプレートを元に作成すると非常に様々なファイルやパッケージがプロジェクトに組み込まれてしまいますが、最低限のファイルからなるプロジェクトを作成したい場合は[Sitecore Azure ACS] Azure ACS を使用してユーザーを認証する Sitecore Web アプリケーションを作成する その1[Sitecore Azure ACS] Azure ACS を使用してユーザーを認証する Sitecore Web アプリケーションを作成する その2 で記載した方法などが参考になると思います。

3.動作確認

あとはVisual Studio で作成されたプロジェクトをデバッグ実行してみましょう。記事の内容に従って Visual Studio のテンプレートから アプリケーションを作成した場合は、Web.config の設定で Webサイトの ルートから匿名ユーザーを拒否する設定になっているので、いきなりAzure ACSの画面にリダイレクトされます。

例えば Windows Live ID などを使用してログインするとログインできます。

Windows LIVE ID を IDプロバイダーとして利用する場合、注意事項として、Windows Live IDから返されるトークンにはhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier というユーザーを一意に表す文字列の羅列のクレームとプロバイダを現すクレームしか含まれません。そのため、意味のあるユーザー名やメールアドレスを取得できないので注意が必要です。詳細は以下のURLを参照してください。
- Windows Live ID as an ACS Identity Provider
http://msdn.microsoft.com/en-us/library/gg185944.aspx

ちなみに、Yahoo!などでログインするとトークンに名前やメールアドレスのクレームが含まれるので名前が画面に表示されます。これは仕様なのですが、様々なWebサイトやSNSのソーシャルアカウントを使用したログインの中に マイクロソフトアカウントを使用したログインの機能が提供されない理由が分かった気がします。

4.まとめ

説明は以上です。今回は ASP.NET MVC で環境を構築しましたが、ASP.NET Web Formでも同じです。