miso_soup3 Blog

主に ASP.NET 関連について書いています。

Windows Azure Active Directory を使用した認証アプリ ASP.NET MVC

この記事は、Windows Azure Advent Calendar 2013 14 日目の記事です。

Visual Studio 2013 では、Windows Azure Active Directory(以降 WAAD)を使用した認証アプリを作成するための、プロジェクトテンプレートが用意されています。ドメインを入力すれば、認証を利用する実装コードが生成されます。

ASP.NET MVC で作成すると、ログイン機能を含めて試すことができます。

ということでこの記事では、Visual Studio 2013 にて WAAD 認証を利用した ASP.NET MVC アプリを作成する手順を記載します。
また、1から始められるよう WAAD のディレクトリを新しく作成するところから始めます。

※Windows Azure アカウントの用意は必要です。
※VS 2012 でも WAAD 認証は可能です。
※ここでは、手順のみ記載しています。ASP.NET と WAAD の連携の詳細情報は、松崎さんのブログ Windows Azure Active Directory と事前準備 から始まるシリーズが大変参考になります。

作成後のアプリ

作成したプロジェクトを起動すると、まずこのような画面がでます。https でデバッグが行われます。

f:id:miso_soup3:20131214235441p:plain

サイト閲覧の続行を行うと、サインイン画面が表示されます。

f:id:miso_soup3:20131214235617p:plain

WAAD に登録しているアカウント情報を入力すると、おなじみのスタートページが表示されます。

f:id:miso_soup3:20131214235744p:plain

右上には、現在ログイン中のユーザー情報が表示されています。
もちろん、サインアウトも行うことができます。

それでは、アプリ作成の手順を書いていきます。(ただいまアジェンダのみ)

WAAD ディレクトリの作成

Azure のポータルサイトにログインし、「Active Directory」タブを選択し、「新規」をクリックします。
(※既にディレクトリが用意されているかもしれません。既存のディレクトリを利用する場合は、新た作成する必要はありません。)

f:id:miso_soup3:20131215005035p:plain

飛び出してきたセクションにて「ディレクトリ」→「カスタム作成」をクリックします。

f:id:miso_soup3:20131215005051p:plain

ダイアログでは、下の様に選択します。「名前」は一意の値になるよう任意の値を入力します。
ここでの「ドメイン」xxxxx.onmicrosoft.com は、後のプロジェクト作成で必要になります。

f:id:miso_soup3:20131215005201p:plain

ディレクトリの作成は以上です。

ユーザーの作成

作成した(もしくは既存の)ディレクトリにユーザーを追加します。
ディレクトリの管理画面で「ユーザー」、「ユーザーの追加」をクリックします。

f:id:miso_soup3:20131215005753p:plain

表示されるダイアログで、「ユーザーの種類」を組織内の新しいユーザー、「ユーザー名」を任意の値にし、次にすすみます。ここでの「ユーザー名」は後ほど使用します。

f:id:miso_soup3:20131215010008p:plain

プロファイルに任意の値を入力します。「ロール」は必ず「全体管理者」を選択します。

f:id:miso_soup3:20131215010209p:plain

「作成」をクリックすると、一時パスワードが表示されます。このパスワードも後で使用します。

ユーザーの作成は以上です。
これまでの作業で、「ドメイン」「ユーザー名」「パスワード」の3つを用意できました。これらは次のプロジェクト作成にて使用します。

プロジェクトの作成

Visual Studio 2013 を開き、ファイル>新規作成>プロジェクトで、「ASP.NET Web アプリケーション」を選択します。(.NET Framework は 4.5 以上にします。)

f:id:miso_soup3:20131215010642p:plain

「MVC」を選択し、「認証の変更」をクリックします。

f:id:miso_soup3:20131215010758p:plain

左側で「組織アカウント」を選択し、「ドメイン」を入力します。(Azure ポータル側で入力したドメインです)

f:id:miso_soup3:20131215011008p:plain

ユーザー情報の入力を求められるので、Azure ポータル側で作成したユーザーの「ユーザー名」と「パスワード」を入力します。パスワードの変更が求められた場合は、案内に従って変更をおこないます。

認証が終わると、先ほどのダイアログに戻りますので「OK」を押します。
プロジェクトを作成中に「組織認証を有効にする」というメッセージが表示されるかと思います。
恐らくこのときに、WAAD のディレクトリに今作成しているプロジェクトをアプリケーションとして登録しています。

プロジェクトの作成は以上です。

F5 でデバッグを行うと、ログイン画面が表示され、作成したユーザーのアカウントでログインを行うことができます。

エラーがでる場合

作業中、2つのエラーに遭遇したので記録しておきます。

エラー1

アカウント承認時に「An error occurred while processing this request」というアラートがでる場合は、アカウントのユーザー名が「@xxxx.onmicrosoft.com」で終わるものかどうか確認します。(マイクロソフト等のアカウントは利用できません。新しくユーザーを作成して試します。)

エラー2

他、プロジェクト作成時に「Authorization_RequestDenied: Insufficient privileges to complete
the operation」というアラートが出る場合があります。原因は分からないのですが、「アプリケーション」の登録を一度も行ったことがない場合にでるかもしれません。同じ方がいらっしゃる様子→Authorization_RequestDenied when creating new ASP.NET project using Organization Account
一度、適当にアプリケーションの登録行為を行ってみるとエラーが出なくなる、と推測しています。
簡単な手順を書いておきますので、エラーがでる場合は試してみてください。

・Azure ポータルの作成したディレクトリにて「アプリケーション」>「追加」を選択
・「組織で開発中のアプリケーションを追加」を選択
・名前は適当に入力します。
・種類は「WEB アプリケーションや WebAPI」を選択します。
・「アプリケーションのURL」「アプリケーション ID/URI」は、適当に「https://localhost」を入力します
・「シングルサインオン」を選択します。

以上です。この操作の後、もう一度プロジェクトを試してみてください。
(今後は、プロジェクト作成時にアプリケーションの登録作業を行ってくれるはずです。)

参考