Laravel Passport は、Laravel フレームワークの下での完全な OAuth2 サーバー実装です。API を介してユーザー ID を認証および認可できるため、ユーザーの資格情報を公開せずに API サービスにアクセスできるため、コストが大幅に削減されます。開発によりアプリケーションのセキュリティが向上します。
Laravel Passport の背後にある OAuth2 プロトコルは業界標準であるため、同じツールとプロセスを使用して、他の言語やフレームワークで OAuth2 認証と認可を簡単に統合できます。以下では、この記事ではLaravel Passportのプロセス、設定、使い方を詳しく紹介します。
パスポートのインストール
Laravel Passport を使用する前に、まずインストールする必要があります。パスポートをインストールするには、composer コマンドを使用できます。コマンドは次のとおりです:
composer require laravel/passport
Enable Passport
Laravel Passport をインストールした後、そのサービス プロバイダーを構成内のプロバイダーに追加する必要があります。 /app.php ファイル配列でファイルを開き、プロバイダー配列を見つけて、以下に示すように Laravel Passport のサービスプロバイダーを追加します。
'providers' => [ // Other Service Providers... Laravel\Passport\PassportServiceProvider::class, ],
データベーステーブルの作成
Laravel Passport を使用する前に、新しいパスポートも作成する必要があります。必要なデータベーステーブルについては、次の職人コマンドを使用して移行ファイルを生成できます:
php artisan migrate
上記のコマンドを実行すると、Laravel Passport はデータベースにいくつかの新しいテーブルを作成しますOAuth2 クライアント、アクセス トークン、リフレッシュ トークン、その他のデータを保存します。
設定ファイルの公開
次の職人コマンドを実行して、Passport 設定ファイルを Laravel プロジェクトの config ディレクトリに公開します:
php artisan vendor:publish --tag=passport-config
Create key
この時点で、Laravel Passport を使用するために必要な前提条件が完了しました。次に、次の職人コマンドを使用して暗号化キーを生成する必要があります:
php artisan passport:keys
上記のコマンドは、Cookie やアクセス トークンなどのデータに署名するための暗号化キーを生成します。
Passport の構成
上記の手順を完了したら、次に、Passport を実行できるように構成する必要があります。 config/auth.php 構成ファイルで、API ドライバーのドライバーをパスポートに変更し、ガードとプロバイダーを次のように設定します。
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
同じファイルでプロバイダーを次のように構成します。
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], ],
設定ファイルが完成すると、API 認証の準備が整います。
ルートの作成
次に、次のように app/Http ルーティング ファイルに API ルートを作成する必要があります:
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
上記のルーティングの例では、auth が定義されています。 API ミドルウェア。リクエストが認証されたユーザーからのものであるかどうかを検証するために使用されます。認証されたユーザーではない場合、検証が失敗すると 401 ステータス コードが返されます。
クライアントの作成
アプリケーションの構成と API ルーティングの設定が完了したので、API クライアントを作成する必要があります。 Laravel Passportでは、新しいOAuth2クライアントを作成するためのartisanコマンドpassport:clientが提供されています。以下に示すようにコマンドを実行します:
php artisan passport:client --client
コマンドを実行した後、以下に示すようにクライアント名と認可リダイレクト URI を入力する必要があります:
php artisan passport:client --client Which user ID should the client be assigned to? [0]: > 1 What should we name the client? > Test Where should we redirect the request after authorization? > http://example.com/callback
上記のコマンドは新しい OAuth2 クライアントを作成します。このアプリケーションの API にリクエストを送信するために使用されます。後続の API リクエストで使用するクライアント ID とクライアント シークレットを取得します。
認可の取得
クライアントが作成され、認可リダイレクト URI を取得しました。次に、認可を取得するためにその URI にリクエストを送信する必要があります。その後、Passport はクライアントのアクセス トークンを生成し、クライアントに返します。以下に示す URL を使用して、クライアント ID とリダイレクト URI を置き換えます。
http://your-app.com/oauth/authorize?client_id={client-id}&redirect_uri={redirect-uri} &response_type=code&scope=
URL を入力すると、以下に示す OAuth2 認証画面が表示されます。
「認可」ボタンをクリックすると認可が行われ、リダイレクトURIにリダイレクトされます。
アクセス トークンの取得
これで、承認を取得し、クライアントに API へのアクセスが許可されました。クライアント キーとアクセス トークンを交換するには、OAuth2 認証コードを使用する必要があります。以下に示すように、curl コマンドを使用して、API 認証サーバーからアクセス トークンを取得できます:
$ curl -X POST -H "Accept: application/json" -F "client_id={client-id}" -F "client_secret={client-secret}" -F "grant_type=authorization_code" -F "code={code}" -F "redirect_uri={redirect-uri}" http://your-app.com/oauth/token
上記のコマンドを実行した後、を実行すると、以下に示すような JSON オブジェクトが取得されます。これには、access_token やfresh_token などの情報が含まれています。
{ "token_type": "Bearer", "expires_in": 86400, "access_token": "{access-token}", "refresh_token": "{refresh-token}", }
API リクエストにアクセス トークンを使用する
アクセス トークンを取得したので、次のことができます。アクセストークンを使用する API を使用してリクエストを行います。以下に示すように、API リクエスト ヘッダーに Authorization ヘッダーを追加し、トークン コンテンツとしてアクセス トークンを使用するベアラー認証スキームを設定する必要があります。
$client = new \GuzzleHttp\Client(); $response = $client->request('GET', 'http://your-app.com/api/user', [ 'headers' => [ 'Authorization' => 'Bearer '.$accessToken, 'Accept' => 'application/json', ], ]);
上記のコードでは、アクセス トークンを使用します。 token Bearer TOKEN の形式で API サーバーにトークンを送信し検証を行い、成功した場合は API の応答結果を取得します。
概要
この記事では、Laravel Passport のプロセス、構成、使用方法について説明します。 Laravel Passportを使用すると、OAuth2プロトコルをサポートし、他のプログラミング言語やフレームワークでOAuth2認可を実装するアプリケーションと相互運用しながら、APIアプリケーションに安全な認証と認可を迅速に追加できるため、開発者はセキュリティが高く、簡単に構築できます。 API アプリケーションを使用します。
以上がLaravel Passportのプロセス、構成、使用方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。