結論
Fortify OR (Fortify AND Sanctum) OR WorkOS OR Laravel Passport OR 自作 あたりが一般的なLaravelでの認証の候補。
公式ドキュメントhttps://laravel.com/docs/12.x/authenticationを見れば諸々書いています。
経緯
Laravelでアプリを作ってみようと思い、認証システムはLaravel Breezeでいいかなと思っていると、公式のリリースノートにこんな文章が。
With the introduction of our new application starter kits, Laravel Breeze and Laravel Jetstream will no longer receive additional updates.
引用元:https://laravel.com/docs/12.x/releases
翻訳すると、
新しいアプリケーション スターター キットの導入により、Laravel Breeze と Laravel Jetstream は追加のアップデートを受けられなくなります。
今まで認証システムを作る際は、Laravel Breeze を使用していたのですが、追加のアップデートが受けられなくなるということですので、ほかの認証システムを調べてみました。
比較
| 方式 | APIサーバー対応 | 実装難易度 (主観) | 強み / 使いどころ | 留意点 |
|---|---|---|---|---|
| Fortify | △: 提供されるエンドポイントをAPIレスポンスに調整すれば流用できるはず | 中 | Laravel公式の拡張性高いヘッドレス認証で、Starter Kitを追加すればUIと処理フローもまとめて導入できる | API/SPA向けではレスポンス形式や認証ガードを自前で最適化する必要がある。トークン管理は別コンポーネントと組み合わせる前提 |
| Fortify + Sanctum | ○: SPA/モバイル向けのAPIトークン配布やCookie認証に対応 | 中〜やや高 | Fortifyでフォームロジックを置き換えつつ、SanctumでCSRF保護付きCookie or APIトークンを提供。Laravel公式構成でドキュメントが豊富 | SPA構成ではCORS/CSRFの設定やトークンドライバ選定など初期セットアップに注意が必要。 |
| WorkOS | ○: OAuth / SAML / SCIMなどのIDaaS連携をAPIエンドポイントで提供 | 中 | Laravel側はSDKで処理に集中できる | 外部SaaS依存・従量課金。 |
| Laravel Passport | ◎: OAuth2での認証ができる | やや高 | OAuth2正式実装をLaravel公式で提供。サードパーティクライアント向け公開APIやモバイルアプリ連携に強い | OAuth2の概念理解、暗号鍵管理、クライアント登録など下準備が多い。軽量案件ではオーバーエンジニアリングになりがち |
| 自作 | ◎: 要件に合わせて好きなAPI設計が可能 | 高 | 完全に要件特化、既存資産や他言語サービスと同じUXを再現できる | パスワードハッシュや多要素認証、トークン失効、レート制限などセキュリティ責任がすべて自分に来る。監査や保守コストも増大 |
APIサーバー指向なら「Fortify + Sanctum」か「Laravel Passport」が手堅く、WorkOSは従量課金はかかるがエンタープライズSSOを素早く導入したいときの選択肢。
要件がシンプルならFortify単体でも十分。
長期保守と一貫性を考えるとLaravel公式コンポーネントの組み合わせを優先すると安心。