喜帳面の日記

50歳越えおやじのASP.NET MVC への挑戦日記です。

Visual Studio Express 2012 for Web でいってみる 31.OAuth/OpenId認証(その3)MVC4でGoogle+ 認証を使う

Visual Studio Express 2012やらMVC4と今となっては化石ネタかもしれませんが、久しぶりの更新です。

さて、今般MVC4のテスト用に借りていたレンタルサーバーでは、頻繁に

アプリケーションプールのリサイクルが発生するほどWebアプリがでっかくなってしまったので、新しいサーバーに引っ越ししました。ついでにSSLにも対応してみました。そこでURLが変更になったので,「Microsoft」「Twitter」「Facebook」、「Google」を使っての外部認証ログインのURL設定を変更する必要があります。「Microsoft」「Twitter」「Facebook」については単に登録しているリダイレクト用のURLを変更するだけで対応できたのですが、Googleで躓いてしまいました。最初の設定では一番単純で何の記述も不要だったGoogleでログインすると、「OpenID auth request contains an unregistered domain.」とログインさせてくれません。あわててググってみると、どうやら従来の手法での認証は2015年4月20日には使えなくなって、新たな認証は既に停止してますみたいな情報に行き当たりました。以下を参照ください。

Migrating to Google+ Sign-In - Google+ Platform — Google Developers

どうやら、GooglePlusでの認証に切り替えればいけそうな記述なので、再度調査。

でも見つかる情報はMVC5以降のOWINを使った事例ばかりで、MVC4の事例が見つからずあきらめかけていたところ、以下のページに行き当たりました。感謝!、感謝!

Google+ Signin for ASP.NET MVC 4 | Be a Big Rockstar

このページの最後にGithubへのリンクがあります。そのリンクに従ってGithubから

「GooglePlusOAuthLogin」ZIPをダウンロードして展開するとMVC4のプロジェクトが取得できます。

 

私がやった手順は以下の通りです。

1.Google API Consoleへ行ってアプリケーションを登録する

ここんところは、以下のページを参照しました。感謝!

Using Google+ authentication in ASP.NET MVC | Be a Big Rockstar

ASP.NET MVC 5 で OAuth 2.0 を使用して Google 認証を行う方法: ある SE のつぶやき

2.Githubから「GooglePlusOAuthLogin」プロジェクトを取得

以下このプロジェクトと自分のプロジェクトを見比べながら変更しました。

3.自分のプロジェクトの「App_Start」フォルダに「GooglePlusOAuthLogin」プロジェクトから「GooglePlusClient.cs」をコピーして追加。(そのまま使用)

4.「App_Start」フォルダ内の「AuthConfig.cs」内のOAuthWebSecurity.RegisterGoogleClient();をコメントアウトし、代わりに

OAuthWebSecurity.RegisterClient(new GooglePlusClient
("1で取得したクライアントID", "1で取得したクライアントシークレット"
), "Google+", null);

を追加。

5.「Controllers」フォルダの「AccountController.cs」については、

using GooglePlusOAuthLogin; を追加

ExternalLoginCallbackメソッド

GooglePlusClient.RewriteRequest();を追加。

6.「Views」-「Account」フォルダの「_ExternalLoginsListPartial.cshtml」内のgoogleでログインボタンのvalue部分を「value="google"」から「value="GooglePlus"」に変更。

 

今のところ以上の改定作業で「GooglePlus」でのログインで自プロジェクトへのログインができるようになりました。

今後ともこれでいいのか若干不安がのこりますが、皆さんの参考になれば幸いです。