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

Laravel 開発: Laravel Passport を使用して OAuth2 認証を実装するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-06-15 12:24:071032ブラウズ

Laravel 開発: Laravel Passport を使用して OAuth2 認証を実装するにはどうすればよいですか?

Laravel は、効率的でスケーラブルで保守しやすい Web アプリケーションを簡単に構築できる人気の PHP Web 開発フレームワークです。 Laravelには、Laravel Passportを含む多くの機能とコンポーネントがあります。 Laravel Passport は、開発者が安全な認証をアプリケーションに簡単に追加できるようにする完全な OAuth2 サーバー実装です。

OAuth2 は API を保護するための認証標準であり、サードパーティ アプリケーションが API を介してユーザー データにアクセスできるようにする安全な方法です。これは、Facebook、Google、GitHub、Twitter など、多くの企業や組織で使用されているオープン スタンダードです。 Laravel Passport は、Laravel フレームワークの公式 OAuth2 サーバー実装です。

以下では、Laravel Passportを使用してOAuth2認証を実装する方法を説明します。

ステップ 1: Laravel Passport をインストールする

Composer を使用して Laravel Passport をインストールします。コマンド ラインで次のコマンドを入力します:

composer require laravel/passport

インストールが完了したら、次のコマンドを実行して Passport の構成ファイルとデータベースの移行を公開します:

php artisan passport:install

このコマンドは暗号化キーを次のように作成します。アクセス トークンのデータベース テーブルも同様です。

ステップ 2: パスポートを設定する

Laravel アプリケーションでパスポートを有効にします。 config/app.php ファイルを編集し、LaravelPassportPassportServiceProvider::class, を Provide 配列に追加します。

#LaravelPassportHasApiTokens トレイトを AppUser モデルに実装します。このトレイトは、API ユーザーに関連するいくつかのメソッドをユーザー モデルに追加します。

次に、データ移行を実行して、Passport で使用されるデータベース テーブル構造を作成します。

php artisan migrate

ステップ 3: Passport でクライアントをセットアップする

Passport は内部で OAuth2 クライアント/サーバー モデルを使用します。開発者は、クライアント用に一意の「クライアント ID」と「クライアント シークレット」を作成する必要があります。 Laravel Passport では、新しいクライアントを作成するには、

php Artisan Passport:client コマンドを使用します。このコマンドはクライアント ID とクライアント シークレットを生成します。これらは API で使用できるように適切に保存する必要があります。

php artisan passport:client --client

ステップ 4: API ルートの定義

API ルートを

routes/api.php ファイルで定義します。 Passport には、リクエストに有効なアクセス トークンが含まれているかどうかを確認するための auth:api というミドルウェアが含まれています。保護されたルートを保護するには、必ずこのミドルウェアを使用してください。

例:

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

ステップ 5: アクセス トークンの生成

アクセス トークンを生成する前に、ユーザーはクライアントが自分のデータにアクセスすることを承認する必要があります。 API アプリケーションの場合、フロントエンドでユーザーに認証インターフェイスを表示し、ユーザーがクライアントによるデータへのアクセスを認証できるようにする必要があります。

アクセス トークンを生成するには、POST リクエストを Laravel アプリケーションに送信します。 POST アクセス トークン リクエストには、クライアント ID、クライアント シークレット、ユーザー名、およびパスワードが含まれている必要があります。リクエストが成功すると、Passport はアクセス トークンをアプリケーションに返します。

POST /oauth/token HTTP/1.1
Host: your-app.com
Content-Type: application/x-www-form-urlencoded

grant_type=password&
client_id=client-id&
client_secret=client-secret&
username=user@your-app.com&
password=user-password&

アクセス トークンの応答は次のようになります。

{
    "token_type": "Bearer",
    "expires_in": 31536000,
    "access_token": "eyJ0eXAiOiJKV1QiLCJ...",
    "refresh_token": "def5020086062f..."
}

passport:install コマンドを渡すと、アクセス トークンの生成に使用される暗号化キーが生成されることに注意してください。

ステップ 6: アクセス トークンを使用して API を呼び出す

最後に、アクセス トークンを使用して、保護された API エンドポイントを呼び出します。リクエストのヘッダーを設定するときは、必ずベアラー認証プロトコルを使用し、リクエストに「Authorization」ヘッダーを指定してください。

例:

GET /api/user HTTP/1.1
Host: your-app.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ...

これは、現在認証されているユーザーの JSON 表現を返します。

結論:

Laravel Passport は、OAuth2 認証フローを実装する便利な方法を提供します。これにより、開発者は OAuth2 機能を Laravel アプリケーションに迅速に追加し、API の安全性を高めることができます。上記の手順を通じて、Laravel Passport を使用して Laravel に OAuth2 認証を実装する方法を学習できます。

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

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