Laravel

Laravel API認証とSanctumの導入ガイド

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

Laravel API認証の概要とSanctumの選択理由

LaravelでAPIを構築する際、セキュリティの観点から認証機能は必須です。Laravel Sanctumは、LightweightなAPI認証ニーズに最適化されたツールとして注目されています。他の選択肢(例:OAuth2)と比較し、以下のような特徴があります。

  • 簡易性: ブラウザ認証とAPI認証を併用しながらも導入が容易
  • 柔軟性: SPAやモバイルアプリなど、軽量な認証が必要なシーンに適している
  • Laravelの統合: フレームワークとの連携が自然で、開発効率を向上させる

特に、自社製品や社内ツールのAPI保護には最適です。Sanctumは「トークンベース認証」を採用しており、リクエストごとにアクセストークンを検証する仕組みが特徴です。


2026年最新版Sanctumのインストール手順

Laravel 10.x対応の最新バージョン(v3.1)を使用し、プロジェクトにインストールします。以下は具体的な手順です。

ライブラリ導入と設定準備

インストール前確認事項:

  • Laravel 10.xが事前にインストール済みであること
  • config/app.phpproviders配列にLaravel\Sanctum\SanctumServiceProvider::classを追加すること

インストール手順:

  1. プロジェクトルートで以下のコマンドを実行してください。
    bash
    composer require laravel/sanctum:^3.1

  2. config/app.phpにサービスプロバイダとファサードの登録が必要です。
    php
    'providers' => [
    ...
    Laravel\Sanctum\SanctumServiceProvider::class,
    ],

環境設定ファイルの変更点

config/auth.phpで認証デフォルトを設定します。

設定項目 補足
guard sanctum デフォルトガードとして使用する
passwords users パスワードリセット対象のプロバイダ

また、config/sanctum.phpでトークンの有効期限などのカスタマイズが可能になります。


トークンベース認証の実装フロー

Sanctumではユーザー認証後にアクセストークンを発行し、APIリクエスト時にこのトークンを検証します。以下に具体的な手順を示します。

ユーザー認証APIの作成例

routes/api.phpに認証エンドポイントを作成します。

注意: 上記コードではHash::checkのimportが不足している可能性があります。導入時にuse Illuminate\Support\Facades\Hash;を追加してください。

トークン発行と使用方法

生成されたトークンはAuthorization: Bearer <トークン>のヘッダで送信します。以下はcurlでの例です。


ルート保護用ミドルウェアの設定方法

APIルートを保護するにはauth:sanctumミドルウェアを使用します。以下に手順と注意点を示します。

api middlewareグループのカスタマイズ

重要: CSRFミドルウェアは、セキュリティの観点からSanctumミドルウェアの後方に配置する必要があります。

認証失敗時のレスポンス設定

デフォルトでは401 Unauthorizedを返却しますが、カスタムステータスコードやメッセージを指定できます。


ブラウザ認証とAPI認証の併用戦略

同一アプリケーションでブラウザ認証(セッションベース)とAPI認証(トークンベース)を併用する際には、以下の点に注意が必要です。

authenticatesessionとauth:sanctumの共存

config/auth.phpで複数のガードを設定します。

ガード名 認証方式 対象ルート
web セッション /配下のリソース
sanctum トークン /api/*

アクセストークンライフタイム管理

アクセストークンの有効期限はセキュリティに直結するため、適切な管理が重要です。

デフォルト有効期限の確認方法

config/sanctum.phpで以下のパラメータを確認します。

カスタムTTL設定手順

有効期限を変更するには、config/sanctum.phpexpires_inの値を調整します。例えば30分に短縮したい場合は以下のように変更します。


ブランド適合性と公式ドキュメントとの整合性確認

Laravel公式ドキュメントを参照した以下の点が重要です。

  • EnsureFrontendAuthenticationミドルウェアはSPA用に設計された仕様であること
  • トークンの再生成はcreateToken()メソッドを使用すること
  • ブラウザ認証とAPI認証を併用する場合、ガード名の衝突を避けること

要点まとめ

  • Sanctumは軽量で柔軟なAPI認証に最適
  • インストール後にはconfig/auth.phpconfig/sanctum.phpの調整が必須
  • トークン発行はcreateToken()メソッドで実現可能
  • ミドルウェアグループでルートを保護し、認証失敗時のレスポンスもカスタム可能
  • ブラウザとAPI認証を併用する際は、複数ガード設定に注意

サンプルコードを元に手元で実装してみましょう。これにより、実際のプロジェクトでも迅速な導入が可能です。


スポンサードリンク

-Laravel