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

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

WBOY
WBOYオリジナル
2023-06-15 20:35:241127ブラウズ

モバイル テクノロジーとクラウド コンピューティングの急速な発展に伴い、多くの企業が独自の API サービスを開発し、それを中核ビジネスの一部にしました。このプロセスでは、API データを保護し、許可されたユーザーのみがこの API データにアクセスできるようにすることが非常に重要になります。したがって、API 認証は重要なトピックになります。 LaravelおよびLumenでは、Laravel Passportを使用してAPI認証を実装できます。

Laravel Passport は、OAuth2 標準に基づいた API 認証システムです。 API 認証を簡単に作成する方法を提供し、複数のクライアントと認証方法をサポートします。この記事では、Laravel PassportとLumenを使用してAPI認証を実装する方法について説明します。

Laravel Passport のインストールと構成

まず、Laravel プロジェクトに Laravel Passport をインストールする必要があります。次のコマンドを使用してインストールします:

composer require laravel/passport

インストールが完了したら、次のコマンドを実行して必要な移行を実行する必要があります:

php artisan migrate

php artisan passport:install

上記の passport:installコマンドは認証用のクライアントとキーを作成します。また、スタートアップ サービス プロバイダーの Laravel Passport によって提供される Passport::routes() メソッドを使用して認証ルートを登録する必要があります。

// app/Providers/AuthServiceProvider.php

use LaravelPassportPassport;

// ...

public function boot() 
{
    // ...
    
    Passport::routes();
}

これにより、Laravel Passport によって提供されるルートが登録され、それを使用できるようになります。認証。同時に、config/auth.php 設定ファイルで passport ドライバーを選択する必要もあります:

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

Use Laravel Passport in Lumen

If our project Lumen フレームワーク Created を使用している場合は、Laravel Passport の Lumen バージョンを使用できます。これにより、Lumen と互換性を保つことができます。次のコマンドを使用して Laravel Passport をインストールできます:

composer require dusterio/lumen-passport

インストールが完了したら、次の 2 行のコードを bootstrap/app.php ファイルに追加して、Lumen Passport のサービスプロバイダーを登録する必要があります。 :

$app->register(DusterioLumenPassportPassportServiceProvider::class);
$app->configure('auth');

登録が完了したら、ルーティングとミドルウェアを登録する必要があります。次のコードを app/Http/routes.php ファイルに追加して、Lumen Passport によって提供されるルートを登録できます。

$app->group(['middleware' => ['api']], function ($app) {
    DusterioLumenPassportLumenPassport::routes($app, ['prefix' => 'auth']);
});

上記のコードでは、prefix オプションでルート プレフィックスを指定します。 , middleware は使用するミドルウェアを指定します。

次に、Lumen Passport が提供するミドルウェアを追加する必要があります。 bootstrap/app.php ファイルに、次のコードを追加してミドルウェアを登録します。

$app->middleware([
    // ...
    DusterioLumenPassportHttpMiddlewareAddCustomHeaders::class,
]);

登録後、Luravel Passport を Lumen で使用するための設定が完了しました。

認証にパスワード認証を使用する

Laravel Passportの構成が完了したら、認証にパスワード認証を使用できるようになります。この認可方法では、クライアントはクライアント ID と秘密キーを使用してアクセス トークンをリクエストし、そのアクセス トークンを使用して保護された API リソースをリクエストする必要があります。

次のコードを使用してアクセス トークンをリクエストできます:

$postData = [
    'grant_type' => 'password',
    'client_id' => '{client-id}',
    'client_secret' => '{client-secret}',
    'username' => '{username}',
    'password' => '{password}',
    'scope' => '',
];

$ch = curl_init('http://api.example.com/oauth/token');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

$accessToken = json_decode($response)->access_token;

上記のコードでは、curl ライブラリを使用して API サービスからアクセス トークンをリクエストしました。 {client-id}{client-secret} は、実際のクライアント ID とシークレット、{username} と ## に置き換える必要があることに注意してください。 #{password} は実際のユーザー認証情報に置き換える必要があります。

アクセス トークンを取得したら、それを使用して保護された API リソースにアクセスできます。 API にアクセスするときは、Authorization ヘッダーにアクセス トークンを入れる必要があります。 Laravel でこれを行うには、次のコードを使用します。

$response = Http::withHeaders([
    'Authorization' => 'Bearer ' . $accessToken,
])->get('http://api.example.com/api/user');

上記のコードでは、Laravel の HTTP クライアントを使用して API にアクセスします。クライアントがリクエストを行うと、API サービスがトークンを検証して保護されたリソースを返すことができるように、アクセス トークンを Authorization ヘッダーに置きます。

結論

Laravel Passport と Lumen を使用すると、API サービスに強力な認証機能を追加できます。 API 認証を実装する場合、OAuth2 認可プロトコルとその認可方法を理解する必要があります。パスワード認証を使用する場合、クライアントはクライアント ID と秘密キーを使用してアクセス トークンを要求する必要があります。アクセス トークンを取得したら、それを使用して保護された API リソースにアクセスできます。

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

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