0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel 12における認証システムの技術選定

Posted at

結論

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公式コンポーネントの組み合わせを優先すると安心。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?