ASP.NET MVC 5 で OpenID を使用して Google 認証を行う方法
ASP.NET MVC 5 / Visual Studio 2013 には、Facebook/Twitter/Google/Microsoft 認証を簡単に行うことができる機能が搭載されています。
この記事では、OpenID を使用した Google 認証を行う方法をご紹介します。
但し、Google は OpenID での認証のサポートを 2014 年内にも終了する予定なので、もし既存のシステムで OpenID を使用している場合は、OpenID Connect への移行を検討してください。
Googleはサードパティーに提供するサインイン機能をすべてOpenID Connect規格にアップデートし、現在のOpenIDは来年にもサポートを打ち切る予定だ。Sachsは「デベロッパーはできるだけ速やかにOpenID Connectに切り替えるべきだ」と言う。
サイトにパスワードを保存する必要なし― Microsoft、Google等がユーザー認証の新規格、OpenID Connectをサポート | TechCrunch Japan
なお、OAuth 2.0 (OpenID Connect) による Google 認証は以下の記事を参照してください。
プロジェクトの作成
Visual Studio 2013 を起動して、[ファイル] – [新しいプロジェクト] を選択して、新しい Web アプリケーションを作成します。
[テンプレート] – [Web] – [ASP.NET Web アプリケーション] を選択し [OK] をクリックします。
テンプレートで、[MVC] を選択し、[認証の変更] をクリックします(実際はこのままで動作しますが、この機能があると認識する意味で作業します)。
認証の変更画面で、[個人ユーザーアカウント] を選択し、[OK] をクリックします。
元の画面に戻って、[OK] をクリックし、プロジェクトを作成します。
Google 認証の設定
ソリューションエクスプローラーの [App_Start] – [Startup.Auth.cs] を選択し、以下のソースのコメントを外します。設定はこれだけです。
app.UseGoogleAuthentication();
アプリケーションの実行
F5 キーを押してアプリケーションを実行します。
画面右上の [ログイン] をクリックします。
すると、Google 認証のボタンが表示されているので、これをクリックします。
Google のログイン画面が表示されるので、ログイン情報を入力してログインします。
権限の承認画面が表示されるので、[承認する] をクリックします。
表示されるのは、最初の1回目のみで、2回目以降は権限の承認は必要ありません。
正常にログインできていますね。
ログイン情報はどこに保存されるのか
ここまで、あらかじめ用意された環境で実行してきましたが、ログイン情報はどこに保存されるのでしょうか?
答えは、ローカルにある SQL Server LocalDB です。
ソリューションエクスプローラーで、[すべてのファイルを表示] して、[App_Data] を開くとデータベースが作成されていることが分ります。
このデータベースは、Web.config の以下の設定によって自動で作成されます。ですので、この設定を変えればリモートの SQL Server にログイン情報を保存することも可能です。
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication4-20140330111802.mdf;Initial Catalog=aspnet-WebApplication4-20140330111802;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
おわりに
OpenID を使用した Google 認証がいかに簡単か分ったかと思います。
この簡単な認証方法が使えなくなってしまうのは残念ですが、OpenID Connect に認証方法が統一されれば、それはそれでよいことなので将来に期待ですね。
関連エントリー
参考サイト
スポンサーリンク
Twitter ではブログにはない、いろんな情報を発信しています。
@fnyaさんをフォロー
コメント