fluid_27’s blog

勉強した内容をアウトプットするためのブログ

Laravel JetStream、Laravel Sunctom

Laravel JetStreamとは

Laravel JetStreamは、Laravelのためのに美しくデザインされたアプリケーションのスカフォールドです。ログイン、ユーザー登録、メール確認、2要素認証、セッション管理、Laravel Sanctumを使ったAPI、オプションとしてチーム管理を含んだ、次のLaravelアプリケーションの完璧なスタートポイントを提供します。

JetstreamはTailwind CSSを使用しデザインしており、LivewireかInertiaの使用を選択していただけます。
https://readouble.com/jetstream/1.0/ja/introduction.html

※スカフォールド・・・

アプリケーションに必要となる基本的操作(CRUD)を実現するためのファイルを自動生成する機能

Laravel Sunctomとは

SPA(シングルページアプリケーション)、モバイルアプリケーション、およびシンプルなトークンベースのAPIに軽い認証システムを提供します。Sanctumを使用すればアプリケーションの各ユーザーは、自分のアカウントに対して複数のAPIトークンを生成できます。

1つ目にSanctumは、OAuthの複雑さなしに、ユーザーにAPIトークンを発行するために使用できるシンプルなパッケージです。
ユーザーAPIトークンを単一のデータベーステーブルに保存し、有効なAPIトークンを含む必要があるAuthorizationヘッダを介して受信HTTPリクエストを認証することでこの機能を提供します。

2つ目にSanctumは、Laravelを利用したAPIと通信する必要があるシングルページアプリケーション(SPA)を認証する簡単な方法を提供するために存在します。
この機能のために、Sanctumはいかなる種類のトークンも使用しません。代わりに、SanctumはLaravelの組み込みのクッキーベースのセッション認証サービスを使用します。通常、SanctumはLaravelの「web」認証ガードを利用してこれを実現します。これにより、CSRF保護、セッション認証の利点が提供できるだけでなく、XSSを介した認証資格情報の漏洩を保護します。
Sanctumは、受信リクエストが自身のSPAフロントエンドから発信された場合にのみクッキーを使用して認証を試みます。Sanctumが受信HTTPリクエストを調べるとき、最初に認証クッキーをチェックし、存在しない場合は、Sanctumは有効なAPIトークンのAuthorizationヘッダを調べます。

SanctumをAPIトークン認証のみ、またはSPA認証のみに使用することはまったく問題ありません。Sanctumを使用しているからといって、Sanctumが提供する両方の機能を使用する必要があるわけではありません。

※Authorizationヘッダ・・・

クライアントがサイトにログインする際に入力した情報や、APIキー、トークンなどの認証情報が含まれているもの

※OAuth・・・

OAuthとは、複数のWebサービスを連携して動作させるために使われる仕組み。
通常、Webサービスを利用するためは、個別にユーザーIDとパスワードを入力してユーザーを認証する必要があるが、OAuthを利用することでIDやパスワードを入力することなく、アプリケーション間の連動ができる。
参考:https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be