Laravelで作成したウェブアプリにGoogle アカウントでSSOログインできる機能を実装します。
SSOの概念すらわかっていなかったのでアプトプットとして記載します。
またOAuth(オーオース)の説明についても参考記事を記載しておきます。
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
SSO (シングルサイイオン)とは
ユーザーが1セットのアカウント情報だけで複数のアプリやWebサイトにログインできる仕組みのこと
各サービスの事前準備
1. Google Developers Console(GCP)アカウント作成
2.プロジェクトの作成
「プロジェクト」を押下して、プロジェクト名を入力して「作成」を押下
3.クライアントID、クライアントシークレットの発行
ここで承認済みのリダイレクトURLを設定する必要があります。
認証情報を作成 > OAuthクライアントIDをクリック
OAuthクライアントIDの作成(アプリ名などはよりなりに作成してください)
作成ボタンを押下するとOAuthクライアント情報が表示されるので、クライアントID、クライアントシークレットIDとJSONをダウンロードして、認証情報を保存してください。
4. Google + APIの有効化
Laravel設定
.envにGCPアクセス情報を追加
GOOGLE_CLIENT_ID=xxxxxxxxxx-xxxxxxxxxxxxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=xxxxxx-xxxxxxxxxx-xxxxxxxxx
Laravel Socialite(ソーシャルライト) のインストール
OAuthプロバイダーで認証するためのシンプルで便利なライブリラーでLaravelの公式でサポートされている
公式URL:https://readouble.com/laravel/12.x/ja/socialite.html
インストール
composer require laravel/socialite
Config/services.phpにgoogle認証に必要なプロバイダー情報を追加する
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => 'http://localhost:8080', // ここはGCPの承認済みのリダイレクトURIに合わせる必要があります。
],
ルーティングで実装
<?php
use Illuminate\Support\Facades\Route;
use Laravel\Socialite\Facades\Socialite;
Route::get('/', function () {
return view('welcome');
});
Route::get('/auth/redirect', function () {
return Socialite::driver('google')->redirect();
}); // 追加
実際に動作確認
1.http://localhost:8080/auth/redirectをURL欄に入力
2.Google アカウント選択できること
3.トップページの戻ってくること