ホームページ >PHPフレームワーク >Laravel >Laravel Passportのプロセス、構成、使用方法の詳細な紹介

Laravel Passportのプロセス、構成、使用方法の詳細な紹介

PHPz
PHPzオリジナル
2023-04-23 09:17:581425ブラウズ

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 認証画面が表示されます。

Laravel Passportのプロセス、構成、使用方法の詳細な紹介

「認可」ボタンをクリックすると認可が行われ、リダイレクト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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。