はじめに
ログイン・ログアウト機能じゃなくて、全体的にユーザー認証情報をどのように持つのか?
バックエンドだけで実装するには?
セッションとかAPIトークンについて調べる
LaravelはAuth認証システムとして、passportとsanctum(読み方:サンクタム)を提供
• Laravel passportは OAuth2(読み方:オーオース)認証ベース
• Laravel SanctumはAPIトークンベース
Laravel Sanctumを使ってAPIトークン(BearerToken 読み方:ベアラートークン)を使った認証とLaravelのセッション管理を使ったSPA認証のパターンが実装できる!
APIトークン機能とSPA 認証機能
Laravel SanctumはAPIトークン機能とSPA認証機能という2つの機能がある
Laravel Sanctumは、受信リクエストが自身のSPAフロントエンドから発信された場合にのみクッキーを使用して認証を試みます。Sanctumが受信HTTPリクエストを調べるとき、最初に認証クッキーをチェックし、存在しない場合は、Sanctumは有効なAPIトークンのAuthorizationヘッダを調べます。
API認証
APIトークン機能はJWT認証でよく使われるAPIトークンをAuthorizationヘッダを介して受信、HTTPリクエストを認証する
SPA認証
SPA認証機能はトークンの代わりにクッキーベースのセッション認証サービスを使用。
WEB認証ガードを利用して、CSRF保護、セッション認証の利点が提供できるだけでなく、XSSを介した認証資格情報の漏洩を保護する
CSRF対策について
APIモードで実装するために、CSRFトークンは使えない。そんな時、どうする?
→APIトークンを使う
参考記事:
Laravel 10.x Eloquent:APIリソース
Laravel 10.x Laravel Sanctum
Laravel 10.x CSRF保護
【Laravel】SanctumでAPIトークン認証の使い方とSPA認証との比較
一番分かりやすい OAuth の説明
OAuth アプリケーションと API トークンの違い
HTTP 認証