Laravel Passport
はじめに
Laravel Passport は、数分で Laravel アプリケーションに完全な OAuth2 サーバーの実装を提供します。Passport は、Andy Millington と Simon Hamp によってメンテナンスされている League OAuth2 server の上に構築されています。
このドキュメントでは、OAuth2 について既に理解していることを前提としています。OAuth2 について何も知らない場合は、続行する前に一般的な 用語 と機能について理解することを検討してください。
Passport または Sanctum?
始める前に、アプリケーションが Laravel Passport または Laravel Sanctum のどちらが適しているかを判断することができます。アプリケーションが絶対に OAuth2 をサポートする必要がある場合は、Laravel Passport を使用する必要があります。
ただし、単一ページアプリケーション、モバイルアプリケーション、または API トークンを発行する場合は、Laravel Sanctum を使用する必要があります。Laravel Sanctum は OAuth2 をサポートしていませんが、よりシンプルな API 認証開発体験を提供します。
インストール
install:api
Artisan コマンドを使用して Laravel Passport をインストールできます:
php artisan install:api --passport
このコマンドは、OAuth2 クライアントとアクセストークンを保存するためにアプリケーションが必要とするテーブルを作成するために必要なデータベースマイグレーションを公開および実行します。また、セキュアなアクセストークンを生成するために必要な暗号化キーも作成します。
さらに、このコマンドは、Passport Client
モデルの主キー値として自動増分整数の代わりに UUID を使用するかどうかを尋ねます。
install:api
コマンドを実行した後、App\Models\User
モデルに Laravel\Passport\HasApiTokens
トレイトを追加してください。このトレイトにより、モデルにいくつかのヘルパーメソッドが提供され、認証されたユーザーのトークンとスコープを調べることができます:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
}
最後に、アプリケーションの config/auth.php
構成ファイルで、api
認証ガードを定義し、driver
オプションを passport
に設定する必要があります。これにより、着信 API リクエストの認証に Passport の TokenGuard
を使用するようにアプリケーションに指示されます。
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
Passportの展開
Passportをアプリケーションのサーバーに初めて展開する際には、おそらくpassport:keys
コマンドを実行する必要があるでしょう。このコマンドは、アクセストークンを生成するためにPassportが必要とする暗号化キーを生成します。生成されたキーは通常、ソースコントロールに保存されません:
php artisan passport:keys
必要に応じて、Passportのキーを読み込むパスを定義することができます。これを実現するためには、Passport::loadKeysFrom
メソッドを使用することができます。通常、このメソッドは、アプリケーションのApp\Providers\AppServiceProvider
クラスのboot
メソッドから呼び出すべきです:
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Passport::loadKeysFrom(__DIR__.'/../secrets/oauth');
}
環境からキーを読み込む
または、vendor:publish
Artisanコマンドを使用してPassportの設定ファイルを公開することができます:
php artisan vendor:publish --tag=passport-config
設定ファイルを公開した後、アプリケーションの暗号化キーを環境変数として定義することができます:
PASSPORT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
<private key here>
-----END RSA PRIVATE KEY-----"
PASSPORT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----
<public key here>
-----END PUBLIC KEY-----"