【Laravel9】Laravelの認証ライブラリまとめ
認証・認可について
ログインやセッションなどの
認証機能に必要な機能は、
これらは自力で実装することも可能ですが、
そのため、Laravelでは認証機能を実装するためのライブラリを提供しています。
主な認証系の主なライブラリは以下の通りです。
- Laravel auth
- Laravel ui
- Laravel JetStream
- Laravel Breeze
- Laravel Fortify
- Laravel Sanctum
- Laravel Socialite
(
Qiita:Laravel の認証・認可パッケージが多すぎてわけわからんので図にまとめた
Laravel auth
Laravel本体の
Socialite以外のすべてのパッケージはこのauthを利用しています。
このauthは以前は単独で利用することがありましたが、現状は他のパッケージを介して利用することが多いです。
authが提供する主な機能は以下のとおりです
- ・Basic認証(ユーザー名とパスワードを利用した認証)
- ・Cookieによるセッション管理
- ・メールアドレス検証機能(登録時にメールアドレスに確認メールを送信)
- ・パスワードリセット機能
- ・シンプルな認可機能(ユーザーの権限を管理)
Laravel ui
Laravel ui は、Laravel が提供する認証機能を実装するための最も簡単なライブラリです。
authを用いたバックエンドの仕組みだけでなく、
これらのフロントエンドの実装は以下の3つから選ぶことができます。
- ・Bootstrap
- ・Vue
- ・React
以前まではこのuiを利用していたのですが、
Laravel JetStream
Laravel JetStream は、Laravel8からの標準の認証機能のライブラリです。
JetStreamはログイン、新規登録、メール検証、2段階認証、セッション管理、APIトークン管理などの様々な機能を提供しています。
また、CSSフレームワークとしてTailwindを利用しています。
Laravel Breeze
Laravel Breeze は、複雑であったJetStreamをシンプルにしたライブラリで現在最も新しいものです。
シンプルになった分利用する難易度は低いため、公式からもまずはBreezeを利用してみることを推奨しています。
(個人的には覚えること多すぎてこれでシンプルなのか?という感じですが)
Breezeは以下の4種類のテンプレートから実装を選ぶことができます。 (CSSフレームワークはTailwindを使用しています)
- ・Blade
- ・Vue
- ・React
- ・API
このうちBreezeのテンプレートとしてのVueとReactは
Inertia.jsは、VueやReactを利用してフロントエンドを実装する際に、サーバーサイドとフロントエンドの間でデータをやり取りするためのライブラリです。また、Vue-Routerのようなルーティングライブラリをサーバーサイドで実装することができます。
これはデータの受け渡しをサーバーサイドで行うことで、フロントエンドの実装をシンプルにすることができますが、一方でフロントエンドとサーバーサイドを分離させるという昨今のトレンドとは反するものです。
このテンプレートを使うと、フロントエンドの実装をサーバーサイドで行うことができるため、フロントエンドの実装を行う人材を必要としないようなシステムの開発に向いています。
Laravel Fortify
Laravel Fortify は、JetStreamのように多くの機能を提供するライブラリではなく、フロントエンドの実装は行わず、
JetStreamは内部的にはこのFortifyを利用しています。
フロントエンドの実装は自前で行う必要があるので導入当初は手間がかかりますが、自由にフロントエンドを実装することができます。
Fority(とそれを内部で利用しているJetStream)は、MFA認証が利用できます。
Laravel Sanctum
Laravel Sanctum は、APIトークン管理機能を提供するライブラリです。
Laravel8.6からは、Laravelに標準でインストールされています。
外部からAPIを利用する際に、ユーザー名とパスワードを利用して認証するのではなく、トークンを利用して認証することで、セキュリティを高めることができます。
sanctumはLaravelとSPA(Single Page Application)を利用してフロントエンドを実装する際に利用することが多いです。
Laravel Socialite
Laravel Socialite は、OAuth認証を実装するためのライブラリです。
いわゆるソーシャルログインと呼ばれる機能で、GoogleやTwitterなどの外部サービスのアカウントを利用してログインする機能を実装する際に利用します。
OAuth認証の動作についての解説はこれがわかりやすかったです。 Qiita:一番分かりやすい OAuth の説明
どのライブラリを利用するか
Laravelの認証機能を実装する際には、
システムの開発には、
フロントエンドの実装をサーバーサイドで行う場合は、Inertia.jsを利用することが多いです。
Inertia.jsを利用する場合は、BreezeのVueやReactのテンプレートを利用することが多いです。
Inertia.jsを利用しない場合は、BreezeのBladeテンプレートを利用することが多いです。
また、フロントエンドの実装をサーバーサイドで行わない場合は、
SPAを利用する場合は、Laravel Sanctumを利用することが多いです。
SPAを利用しない場合は、Laravel Sanctumを利用する必要はありません。
また、
OAuth認証を利用する場合は、Laravel Socialiteを利用することが多いです。
OAuth認証を利用しない場合は、Laravel Socialiteを利用する必要はありません。
以上のように、