はじめに
自社システムに 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 ではこのように登録されている。パスワードがないことがわかる。
まとめ
非常に簡単に Google の外部認証を使ってログインすることができた。次は独自の外部認証サービス自体を作成していく。