検索
ホームページPHPフレームワークLaravelLaravel 開発: Laravel Passport と JWT を使用して API 認証を実装するにはどうすればよいですか?

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,
],
## を追加します。 #次に、次のコマンドを実行して、JWT に必要な秘密キーを生成します。

php artisan jwt:secret

config/auth.php ファイルに、jwt ガード構成を追加し (ガード ガード オプションとして jwt を使用)、デフォルトの認証ドライバー 「jwt」に設定します:

'guards' => [
    ...
    'jwt' => [
        'driver' => 'jwt',
        'provider' => 'users'
    ],
],
...
'defaults' => [
    'guard' => 'jwt',
    ...
],

config/auth.php ファイルに、JWT ユーザー プロバイダーのユーザー設定を追加します (Eloquent モデルを使用するように指示します):

'providers' => [
    ...
    'users' => [
        'driver' => 'eloquent',
        'model' => AppModelsUser::class
    ]
],

Laravel を使用しますPassport と JWT API 認証

準備作業が完了したら、Laravel Passport と JWT を使用して API 認証を実装できます。具体的な操作手順は以下のとおりです。

ステップ 1: API ルーティングの登録

まず、routes/api.php ファイルに API ルーティングを登録します。たとえば、ユーザー情報を取得するための GET ルートを定義します。

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

ここでは Laravel のミドルウェア auth:api が使用されており、認証されたユーザーからのリクエストが確実に通過できるようにします。ルーティング ミドルウェアを使用すると、この認証ステップをルートに追加します。

ステップ 2: アクセス トークンを作成する

ユーザーが API にアクセスするにはアクセス トークンが必要です。パスワード認証アクセス トークンを使用する必要があります。具体的な実装手順は次のとおりです:

まず、ユーザーが提供したユーザー名とパスワードを受け取るルートを定義する必要があります:

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);
});

In上記のコードでは、GuzzleHttp を使用します。クライアントは POST リクエストを送信してアクセス トークンを取得します。このうち、grant_type は「password」にする必要があり、client_id と client_secret はそれぞれ Laravel Passport で適用される ID と Secret に対応します。リクエストが成功すると、API にアクセスするためのユーザーのアクセス トークン access_token を含む JSON 応答が返されます。

ステップ 3: API リクエストの開始

取得したトークン access_token を使用して、API にリクエストを送信し、ユーザーの ID を確認し、保護されたリソースを取得できます。 API にリクエストを行うときは、ヘッダーに認証キーと値のペアを追加する必要があります。その値は「Bearer access_token」です。例:

$accessToken = 'your-access-token';
$response = $http->withHeaders([
    'Authorization' => 'Bearer ' . $accessToken
])->get('http://your-app.com/api/user');

リクエストが成功すると、API はユーザー情報を返します。

結論

Laravelアプリケーションでは、Laravel Passportが強力なOAuth2認証プロトコルとAPI認証機能を提供しており、JWTは安全で便利な認証方式です。実際の開発では、Laravel PassportとJWTを組み合わせて使用​​することで、APIのセキュリティと信頼性を向上させ、悪意のある攻撃者によるユーザーデータの盗難や改ざんから保護することができます。

以上がLaravel 開発: Laravel Passport と JWT を使用して API 認証を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Laravel(PHP)vs。Python:異なるユースケースとアプリケーションLaravel(PHP)vs。Python:異なるユースケースとアプリケーションApr 18, 2025 am 12:16 AM

LaravelまたはPythonの選択は、プロジェクトの要件に依存します。1)Webアプリケーションをすばやく開発し、ORMと認証システムを使用する必要がある場合は、Laravelを選択します。 2)データ分析、機械学習、または科学的コンピューティングが含まれる場合は、Pythonを選択します。

LaravelとPython:適切なツールを見つけるLaravelとPython:適切なツールを見つけるApr 18, 2025 am 12:14 AM

LaravelはWebアプリケーションを迅速に構築するのに適しており、Pythonは柔軟性と汎用性を必要とするプロジェクトに適しています。 1)Laravelは、PHPエコシステムに適したORMやルーティングなどの豊富な機能を提供します。 2)Pythonは、簡潔な構文と強力なライブラリエコシステムで知られており、Web開発やデータサイエンスなどのフィールドに適しています。

LaravelとPHP:動的なWebサイトの作成LaravelとPHP:動的なWebサイトの作成Apr 18, 2025 am 12:12 AM

LaravelとPHPを使用して、動的なWebサイトを効率的に楽しく作成します。 1)LaravelはMVCアーキテクチャに従い、ブレードテンプレートエンジンはHTMLの書き込みを簡素化します。 2)ルーティングシステムと要求処理メカニズムにより、URL定義とユーザー入力処理が簡単になります。 3)Eloquentormはデータベース操作を簡素化します。 4)データベースの移行、CRUD操作、ブレードテンプレートの使用は、ブログシステムの例を介して実証されています。 5)Laravelは、強力なユーザー認証と承認機能を提供します。 6)デバッグスキルには、ロギングシステムと職人ツールの使用が含まれます。 7)パフォーマンスの最適化の提案には、怠zyなロードとキャッシュが含まれます。

Laravelとフルスタック:フロントとバックを一緒にLaravelとフルスタック:フロントとバックを一緒にApr 18, 2025 am 12:07 AM

Laravelは、ブレードテンプレートエンジン、Eloquentorm、Artisan Tools、Laravelmixを介してフルスタック開発を実現します。1。ブレードは、フロントエンド開発を簡素化します。 2. Eloquentはデータベース操作を簡素化します。 3。職人は開発効率を向上させます。 4。Laravelmixは、フロントエンドリソースを管理します。

Laravel:現代のWeb開発のためのフレームワークLaravel:現代のWeb開発のためのフレームワークApr 18, 2025 am 12:05 AM

Laravelは、MVCアーキテクチャモデルに従い、豊富なツールと機能を提供し、Web開発プロセスを簡素化する最新のPHPベースのフレームワークです。 1)データベースインタラクション用のEloquentorm、2)高速コード生成のための職人コマンドラインインターフェイス、3)効率的なビュー開発のためのブレードテンプレートエンジン、4)URL構造を定義するための強力なルーティングシステム、5)ユーザー管理のための認証システム、6)リアルタイム機能のためのイベントリスニングとブロードキャスト、7)パフォーマンスを維持するためのパフォーマンスを維持します。

Laravel(PHP)vs。Python:長所と短所を計量しますLaravel(PHP)vs。Python:長所と短所を計量しますApr 17, 2025 am 12:18 AM

LaravelはWebアプリケーションを迅速に構築するのに適していますが、Pythonはより広い範囲のアプリケーションシナリオに適しています。 1.Laravelは、Web開発を簡素化するために、Eloquentorm、Bladeテンプレートエンジン、職人ツールを提供します。 2。Pythonは、その動的なタイプ、リッチ標準ライブラリ、サードパーティのエコシステムで知られており、Web開発、データサイエンス、その他の分野に適しています。

Laravel vs. Python:フレームワークとライブラリの比較Laravel vs. Python:フレームワークとライブラリの比較Apr 17, 2025 am 12:16 AM

LaravelとPythonにはそれぞれ独自の利点があります。Laravelは、機能が豊富なWebアプリケーションを迅速に構築するのに適しており、Pythonはデータサイエンスと一般的なプログラミングの分野でうまく機能します。 1.Laravelは、最新のWebアプリケーションの構築に適したEloquentormおよびBladeテンプレートエンジンを提供します。 2。Pythonには豊富な標準的な図書館とサードパーティライブラリがあり、DjangoとFlaskのフレームワークはさまざまな開発ニーズを満たしています。

Laravelの目的:堅牢でエレガントなWebアプリケーションの構築Laravelの目的:堅牢でエレガントなWebアプリケーションの構築Apr 17, 2025 am 12:13 AM

Laravelは、コード構造を明確にし、開発プロセスをより芸術的にすることができるため、選択する価値があります。 1)LaravelはPHPに基づいており、MVCアーキテクチャに従い、Web開発を簡素化します。 2)Eloquentorm、Artisan Tools、Bladeテンプレートなどのコア機能は、開発の優雅さと堅牢性を高めます。 3)ルーティング、コントローラー、モデル、ビューを通じて、開発者はアプリケーションを効率的に構築できます。 4)キューやイベントモニタリングなどの高度な機能により、アプリケーションのパフォーマンスがさらに向上します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール