~30歳プログラマ歴2年の趣味サイト~
CategoryContactAbout
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ではこのように登録されている。パスワードがないことがわかる。

DB確認

まとめ

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

愛知県在住。プログラマ歴2年目。自動車部品メーカーにて5年程従事した後に、新規一転プログラマの道へ。

現在はベンチャー企業でシステム開発を行っている。メインの使用言語はC#。フロントもJQueryでやっているがReactへの移行を考えている。 短期目標はプログラミング知識を身に着けて自分一人でサービス開発をする、その後中期目標として5年後までにはゲーム開発会社を起業する。 長期目標は楽しく、楽して人生を送りたい。プログラミングは大好き。

仕事、質問、指摘どんなことでも嬉しいのでコンタクトから連絡いただけるとありがたいです。

Gatsby.js + TypeScript + Netlify