9

公式ドキュメント ( https://laravel.com/docs/5.3/passport#introduction ) で説明されているように、Laravel 5.3 用のLaravel Passportパッケージをセットアップしました。

API をモバイル アプリケーションで使用したいので、Password Grant Tokensを実装しようとしています。パスワード付与クライアントを作成し、トークン要求プロセスを...

$response = $http->post('http://my-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'username' => 'my@email.com',
        'password' => 'my-password',
        'scope' => '',
    ],
]);

...期待どおりに機能し、ユーザーの 1 人にアクセス トークンリフレッシュトークンを返します。

しかし、ユーザーのアクセスを制限できるように、いくつかのスコープを定義したいと思います... ドキュメントに従って、AuthServiceProvider.phpのbootメソッドで次のように定義します。

Passport::tokensCan([
    'admin' => 'Perform every action',
    'user' => 'Perform only normal user actions',
]);

このシナリオでは、「悪意のある」通常のユーザーが (上記の POST 呼び出しを使用して) を指定してトークンを要求した場合、そのユーザーは'scope' => 'admin'「管理者」トークンを取得します...そしてそれは私が望むものではありません。

したがって、この状況で通常のユーザーへのアクセスを効果的に制限するワークフローと、スコープ検証ロジックをどこに実装する必要があるかを知りたいです。

前もって感謝します。

4

3 に答える 3