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

PHPz
リリース: 2023-06-13 10:33:13
オリジナル
1424 人が閲覧しました

Web アプリケーションの人気に伴い、OAuth2 は最も人気のある認証プロトコルの 1 つになりました。 OAuth2 は、保護されたリソースにアクセスするための認証トークンを介した安全で高速なアクセスをユーザーに提供します。

Laravel は、Web 開発者にとって最初の選択肢となっている人気のある PHP Web アプリケーション フレームワークです。 Web 開発者が高品質の Web アプリケーションを迅速に構築できるようにする強力な機能とシンプルな構文を備えています。 Laravel Passport は、Laravel の非常に強力な OAuth2 実装であり、開発者が OAuth2 認証を簡素化するのに役立ちます。この記事では、Laravel Passport を使用して OAuth2 認証を実装する方法を説明します。

Laravel Passport の概要

Laravel Passport は、Laravel の OAuth2 サーバー実装であり、開発者が OAuth2 サーバーを迅速に構築し、OAuth2 認証プロセスを簡素化するのに役立ちます。 OAuth2 ネイティブ標準の実装を提供するだけでなく、API キー、クライアント資格情報、アクセス トークンなどのサービスも提供します。 Laravel Passport は、クライアント、キー、トークンを管理するための一連の API も提供しており、Laravel のユーザー認証システムと完全に統合できます。

Laravel Passport の使用

Laravel Passport のインストールは非常に簡単で、Composer を使用して実行できます。ターミナルで Laravel アプリケーション ディレクトリに移動し、次のコマンドを入力します。

composer require laravel/passport
ログイン後にコピー

次に、Laravel Passport のインストール コマンドを実行する必要があります。 Artisan コマンド passport:install を使用してインストールできます。このコマンドは、必要なデータベース移行、いくつかの暗号化キー、およびアプリケーション アクセス トークンを生成します。次のコマンドを直接実行できます:

php artisan passport:install
ログイン後にコピー

このコマンドを実行すると、次のような出力が表示されます:

Encryption keys generated successfully.
Client ID: 1
Client secret: 9CrrluKEDJ3xvTLyHoSz3g3b5W3H4EBvLIS1G3V5
ログイン後にコピー

上記の出力のクライアント ID とクライアント シークレットは、必要な情報です。 OAuth2 クライアントをアプリケーションに登録します。クライアント認証情報により、クライアントはユーザー トークンを取得し、API サーバーにアクセスできるようになります。

Laravel Passport をインストールしたので、それを使用して OAuth2 認証を実装する方法を見てみましょう。

API トークンの生成

Laravel Passport は、保護された API エンドポイントにアクセスするために使用できる API トークンをユーザーごとに提供します。 API トークンを生成するには、次のコードを使用します。

$user = AppModelsUser::find(1);

$token = $user->createToken('MyApp')->accessToken;
ログイン後にコピー

この例では、createToken メソッドを使用して API トークンを生成します。将来的にトークンを識別できるように、識別文字列を提供する必要があります。このメソッドは AccessToken インスタンスを返し、accessToken プロパティを使用してトークン文字列を取得できます。

API トークンを使用して保護された API エンドポイントにアクセスするには、HTTP リクエストのヘッダーにトークンを追加する必要があります。次のコードを使用します。

$request->header('Authorization', 'Bearer '.$accessToken);
ログイン後にコピー

この例では、リクエスト ヘッダー Authorization を使用して API トークンを提供します。通常、トークン文字列はプレフィックス「Bearer」で始まります。

リクエスト ヘッダーに API トークンを追加すると、保護された API エンドポイントにアクセスできるようになり、サーバーは API トークンを使用して認証します。

クライアント資格情報

OAuth2 クライアント資格情報を使用すると、クライアントはユーザーに代わって OAuth2 サーバーからアクセス トークンを取得できます。 Laravel Passport では、次のコードを使用して OAuth2 クライアントを登録できます:

use LaravelPassportClient;

$client = new Client;

$client->name = 'MyApp';
$client->redirect = 'http://example.com/callback';

$client->save();

$client->createToken()->accessToken;
ログイン後にコピー

上記の方法を使用して OAuth2 クライアントを作成し、クライアント ID とクライアント シークレットを使用してアクセス トークンを取得できます。

OAuth2 認可コード

OAuth2 認可コードは、ユーザーがクライアントを介してアクセス トークンを取得するために、ユーザーに代わって OAuth2 サーバーに要求できるようにするプロセスです。 Laravel Passport は OAuth2 認証コードプロセスをサポートし、認証コードを管理するための API も提供します。たとえば、OAuth2 認証コードの作成方法の例を次に示します。

use LaravelPassportPassport;
use IlluminateHttpRequest;

Route::get('/redirect', function (Request $request) {
    $query = http_build_query([
        'client_id' => 'client-id',
        'redirect_uri' => 'http://example.com/callback',
        'response_type' => 'code',
        'scope' => '',
    ]);

    return redirect('http://example.com/oauth/authorize?'.$query);
});

Route::get('/callback', function (Request $request) {
    $token = Request::create(
        'http://example.com/oauth/token',
        'POST',
        [
            'grant_type' => 'authorization_code',
            'client_id' => 'client-id',
            'client_secret' => 'client-secret',
            'redirect_uri' => 'http://example.com/callback',
            'code' => $request->code,
        ]
    );

    $response = Route::dispatch($token);

    return json_decode((string) $response->getContent(), true);
})->name('callback');
ログイン後にコピー

上記のコードでは、まず http_build_query 関数を使用して、 OAuth2サーバー。次に、OAuth2 サーバーにリダイレクトし、クエリ文字列をパラメータとして渡します。ユーザーが承認すると、OAuth2 サーバーはアプリケーションにリダイレクトして戻ります。コールバック ルートでは、保護された API エンドポイントにアクセスするために将来使用するためのアクセス トークンを生成します。

結論

この記事では、Laravel Passport を使用して OAuth2 認証プロセスを簡素化する方法を学びました。 API トークンの生成、クライアント認証情報の構成、OAuth2 認証コード フローの実装方法を学習しました。 Laravel Passport は、安全な OAuth2 認証を迅速に実装できるわかりやすい API を提供します。 Laravel アプリケーションで OAuth2 認証が必要な場合は、Laravel Passport が推奨されるソリューションになります。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート