ASP.NET 4.5 から GoogleやTwitter , Facebook, Microsoftアカウントを使用してユーザーを認証するWebアプリケーションを簡単に作成できるようになっています。カスタム認証プロバイダーを作成すればそれ以外のアカウントの認証も実装できるようです。今回は OpenID や OpenAuth認証を行ってユーザーを認証するASP.ENT Webフォームアプリケーションを作成してみます。WebForm, MVC, Web Page で Facebook, Twitter, Google アカウントを使用する方法やカスタムプロバイダーを作成する方法は下記リンクが参考になります。
OAuth/OpenID Support for WebForms, MVC and WebPages
http://blogs.msdn.com/b/webdev/archive/2012/08/15/oauth-openid-support-for-webforms-mvc-and-webpages.aspx
検証環境は次の通りです
- Visual Studio 2012
- ASP.NET 4.5
- Google を認証プロバイダとして使用
1.Webアプリケーションの作成
Visual Studio を起動して、Webアプリケーションプロジェクトを作成します。プロジェクトテンプレートでASP.NET Web フォームアプリケーションを選択します。今回はAuthTestという名前でプロジェクトを作成しました。

作成されたプロジェクトを調べてみます。Globa.asax.cs を見ると、次のようなコードが記述されています。
void Application_Start(object sender, EventArgs e)
{
// アプリケーションのスタートアップで実行するコードです
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterOpenAuth();
}
AuthConfig.RegisterOpenAuth が OpenID や OpenAuth を使用した認証を行うための設定を記述するメソッドになります。AuthConfig の実体は App_Start\AuthConfig.cs にあります(下図参照)。

AuthConfig.cs の中身をみると次のようになっています。
public static void RegisterOpenAuth()
{
// この ASP.NET の設定に関する詳細については、http://go.microsoft.com/fwlink/?LinkId=252803 を参照してください。
// 外部サービス経由でのログインをサポートするためのアプリケーション。
//OpenAuth.AuthenticationClients.AddTwitter(
// consumerKey: "Twitter のコンシューマー キー",
// consumerSecret: "Twitter のコンシューマー シークレット");
//OpenAuth.AuthenticationClients.AddFacebook(
// appId: "Facebook アプリケーションの ID",
// appSecret: "Facebook アプリケーションのシークレット");
//OpenAuth.AuthenticationClients.AddMicrosoft(
// clientId: "Microsoft アカウントのクライアント ID",
// clientSecret: "Microsoft アカウントのクライアント シークレット");
//OpenAuth.AuthenticationClients.AddGoogle();
}
Google のアカウントを使用して認証を行う方法(OpenID認証) が一番簡単な動作確認の方法になります。まずAddGogle()のコメントを解除します。
OpenAuth.AuthenticationClients.AddGoogle();
Google 以外の認証サービスを使用して認証を行うのは アプリケーションID と シークレットキー を作成しておく必要があります。
準備完了となります。プロジェクトをビルドしてエラーが発生しないことを確認します。
2.動作確認
F5 ボタンをクリックしてデバッグ実行します。トップページの右上のログインボタンをクリックします。

ログイン画面で、"右側の別のサービスを使用してログインします。" という部分に Google ボタンが表示されるのでクリックします。

Google のログインページが表示されますのでここでログインを行ってください。

サインインが成功するとWebアプリケーションにemail情報をWebアプリケーションが要求していることを確認する画面が表示されます。Acceptをクリックするとログインが完了しWebアプリケーションのページにリダイレクトされます。WebアプリケーションのページでDBにユーザーが未作成の場合はユーザーを作成するかの確認画面が表示されます。本確認画面は単純にWebアプリケーションがそのように作成されているためです。

3.まとめ
簡単ですが説明は以上です。Webアプリケーションのプロジェクトテンプレートを使用すると簡単にOpenAuthやOpenIDを使用してGoogleやFacebook,Microsoftなどのアカウントを使用してユーザーを認証するプログラムを作成できます。