ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発: Laravel Passport を使用した OAuth2 サービス プロバイダーの実装

PHP 開発: Laravel Passport を使用した OAuth2 サービス プロバイダーの実装

WBOY
WBOYオリジナル
2023-06-15 16:32:011577ブラウズ

モバイル インターネットの普及に伴い、ユーザーの認証と認可を必要とするアプリケーションがますます増えています。 OAuth2 は、これらの機能を実装するための標準化されたメカニズムをアプリケーションに提供する、一般的な認証および認可フレームワークです。 Laravel Passport は、使いやすく安全ですぐに使える OAuth2 サーバー実装であり、PHP 開発者に OAuth2 認証と認可を構築するための強力なツールを提供します。この記事では、PHP 開発者が OAuth2 の開発と応用をよりよく習得できるよう、Laravel Passport を使用する方法を紹介します。

  1. Laravel Passport の概要

Laravel Passport は、インストールが簡単、使いやすく、拡張が簡単で、信頼性の高い認証および認可メカニズムを提供する完全な OAuth2 サーバー実装です。 Passport は、JSON Web Token (JWT) を使用したトークン署名と検証もサポートしており、RESTful API で非常にシンプルな認証機能を提供します。もちろん、Laravel Passport を使用して OAuth2 サービスプロバイダーを開発するには、まず OAuth2 に関する理論的知識と関連する基本知識を習得する必要があります。

  1. OAuth2 の基本

OAuth2 は、クライアント アプリケーションが認可サーバーを使用してユーザーによって認可されたリソースにアクセスできるようにする認可フレームワークです。 OAuth2 は HTTP ベースのプロトコルとして設計されており、ユーザーはサードパーティのクライアント アプリケーションが特定のリソース サーバー (イメージ サーバーやファイル サーバーなど) にアクセスし、まったく別のサーバーに保存されている情報にアクセスできるようにします。 OAuth2 プロトコルの中核となる概念は次のとおりです。

  • クライアント: リソース サーバー上のリソース (ファイルなど) にアクセスする必要があるアプリケーション。
  • リソース所有者: クライアントがリソースにアクセスすることを承認できるユーザー。
  • 認可サーバー: 認可サーバーはクライアントを認証し、認証が成功するとクライアントにアクセス トークンを発行します。
  • リソース サーバー: 保護されたリソースをクライアントに提供するサーバー。

OAuth2 仕様では、開発者向けにいくつかの承認タイプが定義されています。これらの承認タイプには、次のようなさまざまな使用シナリオがあります。

  • 承認コード: 最も一般的に使用される承認タイプ。認可コード付与タイプ、クライアントはユーザーを認可サーバーにリダイレクトし、認可サーバーは認可コードを返し、クライアントは認可コードを使用してアクセス トークンを要求します。
  • 暗黙的な承認: サーバー間の承認コードの送信を伴わずに、ブラウザ クライアントにアクセス トークンを提供するために使用されます。このとき、トークンはブラウザ クライアントのアドレス バーに直接配置されます。
  • クライアント承認: クライアントがリソース サーバーにアクセスすることを承認するために使用されます。現時点では、承認サーバーはユーザーの参加を必要としません。
  1. Laravel Passport は OAuth2 サービス プロバイダーを実装します

OAuth2 の基本と Laravel Passport の概要を理解したので、実践段階に入ります。 Laravel Passportを使用してOAuth2サービスプロバイダーの実装を開始します。

3.1. Laravel Passport のインストール

Composer を使用して Laravel Passport をインストールし、ターミナルまたはコマンドライン プロンプトを開いて、次のコマンドを入力します:

composer require laravel/passport

Laravel のインストール後パスポート、データベース移行のためのコマンドを実行する必要があります:

php artisan migrate

3.2. OAuth2

を設定する Laravel Passport で、アクセス トークンをリクエストし、「クライアント」を通じてリソースを取得します。始める前に、いくつかのクライアントを作成する必要があります。 Passport 独自のコマンド passport:client を使用してクライアントを作成できます。

php artisan passport:client

このコマンドは、コンソールに作成されたクライアント ID と秘密キー、およびクライアント タイプ (パブリックまたは機密)、クライアントを表示します。エンドタイプによって、アクセストークンがどのように生成されるかが決まります。

次に、パスポートを認証プロバイダとして使用して、config/auth.php ファイルでガードとプロバイダを構成します。

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
]

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

上記のコード スニペットでは、「Gatekeeper」という名前の API のみを有効にしました。 、パスポート ゲートキーパーとして指定します ('driver' => 'passport')。

構成が完了したら、パスポート キーを再生成し、次のコマンドを実行する必要があります:

php artisan passport:keys

このコマンドを実行した後、OAuth2 サービス プロバイダーは構成を完了し、次のコマンドを実行します。 Laravel で OAuth2 アクセス トークンを作成します。

3.3. OAuth2 アクセス トークンの作成

OAuth2 を使用する場合、API エンドポイントを保護するために使用されるアクセス トークンを作成する必要があります。 Laravel PassortではOAuth2アクセストークンの生成が非常に簡単です。保護する必要があるルートでサンプル コードを作成できます。

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

このルートは、アクセス トークンをチェックしてリクエストをユーザーに割り当てる auth:api ミドルウェアを使用します。

  1. Postman を使用した OAuth2 のテスト

OAuth2 サービス プロバイダーとアクセス トークンが構成されたら、Postman を使用してテストできます。 Postman を使用して GET リクエストを作成し、ユーザーがアクセス トークンを取得できるかどうか、またはアクセス トークンを使用して保護されたルートを取得できるかどうかを問い合わせることができます。 Postman では、ユーザーは保護されたルートにアクセスするために認証を必要とします。サンプル コードは次のとおりです。

GET http://localhost:8000/api/user
Authorization : Bearer {access token}

サンプル コードでは、GET リクエストを送信し、OAuth2 アクセス トークンを使用して認証します。すべてがうまくいけば、API は要求された保護された情報を返します。

  1. 概要

この記事では、Laravel Passport の使用方法を紹介しました。これで、OAuth2 仕様と Passport を使用して、PHP アプリケーションで安全かつ効率的な ID を作成する方法をマスターできました。認可メカニズム。 Passport を使用すると、開発の複雑さが軽減され、開発速度が向上するため、Laravel で RESTful API やモバイル アプリケーションを構築する開発者にとって非常に役立ちます。この記事が PHP 開発者にとって参考になり、役立つことを願っています。

以上がPHP 開発: Laravel Passport を使用した OAuth2 サービス プロバイダーの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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