2020.04.22
【C#】ASP.NET MVCでGoogleの外部認証を使用する
はじめに
自社システムにGoogleの外部認証を入れることとなったのでその手順を書いていく。ユーザーとしても複数のアカウントを保持するのは好ましくないのでGoogleアカウントでログインができたらユーザービリティが向上するはずである。
準備
下記二点を行う
- ASP.NET MVCの新規プロジェクトを作成する
- googleのクライアントIDとクライアントシークレットを取得する
クライアントIDとクライアントシークレットの取得に関してはこちらの記事を参照
Google外部認証を有効化する
最初にプロジェクトを作成したときは外部認証が有効になっていないので App_Start
フォルダのStartup.Auth.csのGoogle外部認証部分をコメントアウトしてクライアントIDとクライアントシークレットを入力する。
Startup.Auth.cs
using System;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.Google;
using Owin;
using OAuthApplication.Models;
namespace OAuthApplication
{
public partial class Startup
{
// 認証の構成の詳細については、https://go.microsoft.com/fwlink/?LinkId=301864 を参照してください
public void ConfigureAuth(IAppBuilder app)
{
***
// 次の行のコメントを解除して、サード パーティのログイン プロバイダーを使用したログインを有効にします
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = "**********.apps.googleusercontent.com",
ClientSecret = "*************************"
});
}
}
}
リダイレクトURIを設定する
認可レスポンスパラメータ群を受け取る場所となる遷移先を事前に登録をしておく。 まず、GoogleAPIの認証情報(こちら)へアクセスする。 作成したOAuth2.0クライアントIDの編集ボタンをクリックして、詳細画面へいく。
URIを追加ボタンをクリックして、入力ボックスが現れるのでそこにURIを入力して保存をクリックする。 ここではローカルで立ち上げたところがリダイレクトURIとなるので「https://localhost:44397/signin-google 」と入力した。環境に合わせて変更する必要がある。
確認
ここまでで設定は完了である。 ビルドして実行をし、ログイン画面にいくとgoogleが追加されている。
Googleをクリックして、Googleアカウントで認証を行うと下記画面となる。 ここでも登録をクリックする。
ここまで終わるとログインが完了する。
ちなみにDBではこのように登録されている。パスワードがないことがわかる。
まとめ
非常に簡単にGoogleの外部認証を使ってログインすることができた。次は独自の外部認証サービス自体を作成していく。