😎

Laravelの認証系パッケージを整理する

2021/01/01に公開1

Laravel の認証系ライブラリは日毎に増えてて「俺Laravel詳しいんすよ」とか日々自称している自分でもよくわからなくなってきているので、ここで整理してみる。

Laravelの認証系ライブラリ(※ファーストパーティ)

まずはどのくらい認証系ライブラリがあるのかをリストアップしてみます。わざわざ「ファーストパーティ」と書いてあるのは「公式ライブラリだけでこれだけある」ということを強調したいためです。

それではいってみましょう。

多いなー…。では一つずつ雑に解説していきます。

Laravel UI

一番歴史が古い認証ライブラリ。バックエンドの実装と Blade(Bootstrapベース), Vue, Reactのフロントエンドのコードを生成してくれる。以前はフレームワーク本体に含まれていた認証周りの処理が切り出されたかたち。公式サイトからリンクが消えていることから、近々メンテが止まるのではないかと推測している。

Laravel Socialite

ソーシャル認証のライブラリ。公式では下記サイトがサポートされている

  • Facebook
  • Twitter
  • LinkedIn
  • Google
  • GitHub
  • GitLab
  • Bitbucket

この他にも有志が作成したソーシャル認証が Socialite Providers にまとめられている。

ところで Firebase Admin SDK for PHPってどうなんでしょ? 個人的には使いやすいならこちらに切り替えたい。

Laravel Passport

OAuth2 サーバーの実装。あんまり使っているところを見たことがない。

Laravel Sanctum

モバイルアプリや SPA 作成時に使用されるライブラリ。トークン認証(主にモバイルアプリ用)、クッキー認証(主に SPA 用)ができる。

Laravel Breeze

前述の Laravel UI の後継。Laravel7から採用された新しいコンポーネントスタイルが適用されている。Vue, React のコンポーネントのコード生成は削除されて、Tailwind CSSを採用した Blade ファイルがコード生成される。

Tailwind CSS の作者である Adam Wathan さんは Laravel のコミッターの一人で Laravel と縁が深い。

Laravel Fortify

Laravel の新たな認証基盤(のようなもの。本当の基盤は laravel/auth )。Viewは自作したい。好きにカスタマイズしたい人向け。あと2要素認証が使えるのが大きな特徴。

Laravel Jetstream

全部入りの認証ライブラリ。前述の Laravel Fortify + オプションで Laravel Sanctum が入っている。View は 通常の Blade に加えてオプションで LivewireInertia.js のコンポーネントが生成される。簡易的だが、プロフィール編集機能と認可の機能がついている。

結局どれ使えばいいのよ?

役割がはっきりしている

は除くとして残った下記を検討していく。

  • Laravel UI
    • 前述したが、今後どこまでメンテナンスされるかはっきりしていない。新規でアプリケーションを作成する場合は検討に入らないと思います
  • Laravel Breeze
    • 通常のパスワード認証のみができればよい、というならこれ。
  • Laravel Fortify
    • 自分で色々したい人はこれ。
  • Laravel Jetstream
    • 大は小を兼ねるという人はこれ。

お前は何を使うのよ?

自分が今から使うのなら Laravel Fortify です。最初は「かんたんな認証があればいい(今回の場合は Laravel Breeze )」ってなるのですが、アプリケーションが成長するにつれ往々にしてかんたんな認証では立ち行かなくなったりします。

次に Laravel Jetstream が選択肢としてでてくるのですが、Livewire 込みでコード生成されたファイルが50個くらいあって、自分には管理できそうにないなぁと諦めました。

よって今のところは Laravel Fortify + 必要があれば Laravel Sanctum という結論です。

この選択肢をとる場合、Laravel Fortify 自身のソースコードと laravel/auth 知識(Guardとかそのへん)が必要になります。頑張りましょう。

最終手段として laravel/auth を下敷きに自力で実装するというのもあります。最終手段ではありますが、それを採用している例をしばしば耳にすることがあります。

なにかの参考になれば幸いです。

Discussion

mpywmpyw

認証基盤を自社で持ってて、 Laravel はそれに乗るだけみたいな場合は

最終手段として laravel/auth を下敷きに自力で実装するというのもあります。

逆にこれが最優位だと思いますね。更にもともとついてる認証機能の息の根を完全に止めるために mpyw/null-auth とか入れてもいいかもしれません

(以前使ってはいけないメソッドが生えてることに気持ち悪さを感じて作ったやつ)