【C#】ASP.NET MVCでGoogleの外部認証を使用する

June 27, 2023

top画像

はじめに

自社システムに Google の外部認証を入れることとなったのでその手順を書いていく。ユーザーとしても複数のアカウントを保持するのは好ましくないので Google アカウントでログインができたらユーザービリティが向上するはずである。

準備

下記二点を行う

  • ASP.NET MVC の新規プロジェクトを作成する
  • google のクライアント ID とクライアントシークレットを取得する

クライアント ID とクライアントシークレットの取得に関してはこちらの記事を参照

Google 外部認証を有効化する

最初にプロジェクトを作成したときは外部認証が有効になっていないので App_Startフォルダの Startup.Auth.cs の Google 外部認証部分をコメントアウトしてクライアント ID とクライアントシークレットを入力する。

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 ではこのように登録されている。パスワードがないことがわかる。

DB確認

まとめ

非常に簡単に Google の外部認証を使ってログインすることができた。次は独自の外部認証サービス自体を作成していく。


Profile picture

Written by Mittsu
ベンチャー企業のしがないエンジニア。趣味はサッカーとTCG.

© 2024