Laravel 開発: Laravel Passport と JWT を使用して API 認証を実装するにはどうすればよいですか?
API (アプリケーション プログラミング インターフェイス) 認証は、今日のインターネット アプリケーションにおける一般的な要件です。人気の PHP フレームワークとして、Laravel は API 認証の実装に役立つ 2 つのツール、Laravel Passport と JWT (JSON Web Tokens) を提供します。
この記事では、Laravel PassportとJWTを使ってAPI認証を実装する方法を紹介します。次のコンテンツでは、これら 2 つのツールの基本概念と、それらを Laravel アプリケーションで構成および使用する方法を理解します。
Laravelパスポートとは何ですか?
Laravel Passport は、Laravel フレームワーク用に特別に開発された OAuth2 サーバーで、API 認証システムを迅速かつ安全に構築するのに役立ちます。 Passport は、認証プロセスを実行するための一連の API を提供し、OAuth2 プロトコルで指定された一連の認証方法を内部的に実装しています。
このうち、OAuth2 はプロキシ認証を使用する標準プロトコルです。プロキシ認可は、ユーザーに代わってリソースへのアクセスを取得するための認可メカニズムです。 OAuth2 プロトコルは、ユーザーに代わって保護されたリソースにアクセスするために、サードパーティのアプリケーションに「アクセス トークン」を発行します。したがって、Passport は実際には Laravel アプリケーションで OAuth2 認証サーバーの役割を果たします。
JWT とは何ですか?
JWT (JSON Web Tokens) は、分散ネットワーク環境における認証と認可のためのオープン標準 (RFC 7519) です。 JWT は、クライアントとサーバー間で認証されたユーザー ID 情報とクレームを渡すために一般的に使用されます。 JWT は、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。
通常、ヘッダーには JWT のタイプと使用される暗号化アルゴリズムが含まれ、ペイロードにはユーザー ID 情報とクレームが含まれ、署名は JWT の信頼性を検証するために使用されます。認証に JWT を使用する場合、サーバーは JWT 内の情報を復号化することでユーザーの ID を判断し、API 認証を実現します。
Laravel Passport と JWT の設定
Laravel Passport と JWT を API 認証に使用する前に、まず Laravel アプリケーションで設定する必要があります。具体的な設定手順は次のとおりです:
ステップ 1: Laravel Passport と tymon/jwt-auth をインストールする
composer を使用して、コマンドライン ツールで Laravel Passport と tymon/jwt-auth をインストールします。
composer require laravel/passport composer require tymon/jwt-auth
ステップ 2: Laravel Passport を構成する
config/app.php ファイルに、次のサービス プロバイダーを追加します。
'providers' => [ ... LaravelPassportPassportServiceProvider::class, ],
次に、次のコマンドを実行して、 Passport データ テーブル:
php artisan migrate
Passport のデフォルトの認証方法「Password Grant」の場合、「PassportHasApiTokens」(Passport のデフォルトのユーザー認証 Trait) を User モデルに追加します。 User.php ファイルを開き、次の内容を追加します。
use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; ... }
ステップ 3: JWT を構成する
まず、config/app.php ファイルに、JWTServiceProvider:
'providers' => [ ... TymonJWTAuthProvidersLaravelServiceProvider::class, ],
php artisan jwt:secret
'guards' => [ ... 'jwt' => [ 'driver' => 'jwt', 'provider' => 'users' ], ], ... 'defaults' => [ 'guard' => 'jwt', ... ],
'providers' => [ ... 'users' => [ 'driver' => 'eloquent', 'model' => AppModelsUser::class ] ],
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
Route::post('/login', function (Request $request) { $http = new GuzzleHttpClient; $response = $http->post('http://your-app.com/oauth/token', [ 'form_params' => [ 'grant_type' => 'password', 'client_id' => 'client-id', 'client_secret' => 'client-secret', 'username' => $request->username, 'password' => $request->password, 'scope' => '', ], ]); return json_decode((string) $response->getBody(), true); });
$accessToken = 'your-access-token'; $response = $http->withHeaders([ 'Authorization' => 'Bearer ' . $accessToken ])->get('http://your-app.com/api/user');
以上がLaravel 開発: Laravel Passport と JWT を使用して API 認証を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。