LaravelのAPIトークン認証を完全入門!Sanctumで始める安全な認証
生徒
「Laravelでスマホアプリ用のAPIを作りたいんですが、ログインはどうやって守るんですか?」
先生
「その場合は、APIトークン認証を使うと安全ですよ」
生徒
「APIトークンって何ですか?パスワードとは違うんですか?」
先生
「合鍵のようなものです。Laravel Sanctumを使えば簡単に導入できます」
1. APIトークン認証とは?
APIトークン認証とは、利用者が持つ「トークン」という文字列を使って本人確認を行う仕組みです。トークンは、家の合鍵や社員証のようなもので、正しいものを持っている人だけが中に入れます。
通常のWebサイトではメールアドレスとパスワードでログインしますが、APIでは画面がなく、プログラム同士で通信します。そのため、APIではパスワードの代わりにトークンを使って認証するのが一般的です。
2. Laravel Sanctumとは?
Laravel Sanctumは、Laravel公式の認証ライブラリで、APIトークン認証をとても簡単に実装できます。難しい設定をしなくても、安全な認証機能が使えるのが特徴です。
Sanctumは「軽くて分かりやすい」設計なので、初心者がLaravelの認証と認可を学ぶ最初の一歩としてよく使われています。
3. Sanctumをインストールする
まずはSanctumをプロジェクトに追加します。コマンドはそのままコピーして使えます。
composer require laravel/sanctum
composerはLaravelで部品を管理する道具です。インストールすると、Sanctumの機能が使えるようになります。
4. 設定ファイルとテーブルを準備する
次に、Sanctum用の設定とデータベースの準備を行います。
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
これでAPIトークンを保存するためのテーブルが作成されます。データベースは、情報を整理してしまっておく引き出しのようなものです。
5. UserモデルにSanctumを設定する
ユーザーがトークンを持てるように、Userモデルに設定を追加します。
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
}
これでUserはAPIトークンを発行できるようになります。Traitとは、便利な機能をまとめて取り込む仕組みです。
6. APIトークンを発行する
ログイン後にAPIトークンを発行する例を見てみましょう。
$token = $user->createToken('api-token')->plainTextToken;
このトークンが合鍵になります。利用者は、この文字列を使ってAPIにアクセスします。
7. APIリクエストでトークンを使う
APIを呼び出すときは、トークンをリクエストに含めます。
Authorization: Bearer 発行されたトークン
Bearerとは「このトークンを持っている人」という意味です。API側はこの情報を見て、正しい利用者かどうかを判断します。
8. ルーティングで認証を設定する
APIルートに認証をかけることで、ログイン済みの人だけが使えるようになります。
Route::middleware('auth:sanctum')->get('/user', function () {
return auth()->user();
});
middlewareは、処理の前にチェックを行う門番のような存在です。
9. APIトークン認証のメリット
APIトークン認証を使うことで、パスワードを毎回送らずに済み、安全性が高まります。また、トークンを無効にすることで、簡単にアクセスを止めることもできます。
SanctumはLaravel公式なので情報も多く、Laravelの認証と認可を学ぶ上で安心して使える仕組みです。
10. 初心者がつまずきやすいポイント
最初は「トークンをどこで使うのか」「どこで確認されるのか」が分かりにくいかもしれません。合鍵を渡して、門番が確認する、という流れを思い出すと理解しやすくなります。
Laravel Sanctumはシンプルな設計なので、APIトークン認証の基本を学ぶのにとても向いています。