16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel PassportでOauth2 Password Grant認証の確認とPOSTMANでアクセス環境を整えるまで

Last updated at Posted at 2018-01-19
バージョン Laravel 5.6
プロジェクト名 PassportSample

1. Laravel Passportのインストール

$ cd PassportSample # プロジェクトルートに移動
$ composer require laravel/passport

2. auth設定ファイルを変更

config/auth.php
    'guards' => [
       //...
        'api' => [
-           'driver' => 'token',
+           'driver' => 'passport',
            'provider' => 'users',
        ],
    ],

3. Userモデルにtraitを追加

app/User.php
<?php
//...
+ use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
-    use Notifiable;
+    use HasApiTokens, Notifiable;

//...

4. マイグレーションを実行

$ php artisan migrate

5. サービスドライバーにpassportのrouteを追加

app/Providers/AuthServiceProvider.php
//...
+ use Laravel\Passport\Passport;

class AuthServiceProvider extends ServiceProvider
{
    //...
    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

-       //
+       Passport::routes();
    }
}

6. Oauth Clientを自動生成

$ php artisan passport:install

生成されていることを確認

$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.0.25 — cli) by Justin Hileman
>>> \DB::table('oauth_clients')->get();
=> Illuminate\Support\Collection {#775
     all: [
       {#776
         +"id": 1,
         +"user_id": null,
         +"name": "Laravel Personal Access Client",
         +"secret": "oNjx4p7OcdXwB3rO5u6qIzSvarZbqtzC30razDyu",
         +"redirect": "http://localhost",
         +"personal_access_client": 1,
         +"password_client": 0,
         +"revoked": 0,
         +"created_at": "2018-01-17 13:24:39",
         +"updated_at": "2018-01-17 13:24:39",
       },
       {#778
         +"id": 2,
         +"user_id": null,
         +"name": "Laravel Password Grant Client",
         +"secret": "qCOu7Y91IMlnb7uiyzROmeROKRUJmX8T7AykzwHf",
         +"redirect": "http://localhost",
         +"personal_access_client": 0,
         +"password_client": 1,
         +"revoked": 0,
         +"created_at": "2018-01-17 13:24:39",
         +"updated_at": "2018-01-17 13:24:39",
       },
     ],
   }

7. ダミーユーザーを作成

$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.0.25 — cli) by Justin Hileman
>>> factory(App\User::class, 1)->create();
=> Illuminate\Database\Eloquent\Collection {#804
     all: [
       App\User {#800
         name: "Taurean Beahan MD",
         email: "satterfield.sven@example.net",
         updated_at: "2018-01-17 13:50:49",
         created_at: "2018-01-17 13:50:49",
         id: 1,
       },
     ],
   }
>>> 

8. POSTMANでログインのテスト

スクリーンショット 2018-01-19 18.48.52.png

9. ユーザー情報取得のエンドポイントを追加

routes/api.php
Route::group(['middleware' => 'auth:api'], function () {

    Route::get('me', function(){
        $user = Auth::user();
        return response()
            ->json(compact('user'));
    });

});

10. POSTMANでユーザー情報の取得のテスト

スクリーンショット 2018-06-05 17.25.15.png
  • 8で取得したtokenをヘッダーのAuthorizationに貼り付ける

11. POSTMANの環境変数を設定

スクリーンショット 2018-06-05 17.28.01.png
  • 右上の設定 > Manage ENvironments > Addから環境を追加
  • url, token, refresh_tokenを追加する
  • urlにローカルサーバーのURLを入れ、tokenとrefresh_tokenは空のままにする

12. POSTMANのコレクションでパラメータの保存

  • ログイン
スクリーンショット 2018-06-05 17.31.16.png
  • ユーザー情報取得
スクリーンショット 2018-06-05 17.32.09.png

それぞれURLのホスト名部分を環境変数(url)に書き換えて名前をつけてリクエストを保存する

13. アクセストークンを変数化する

スクリーンショット 2018-06-05 17.35.20.png
  • ユーザー情報取得(認証が必要なルート)のリクエストのTokenほ環境変数(token)に書き換えて保存する
スクリーンショット 2018-06-05 17.35.54.png
var data = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", data.access_token);
postman.setEnvironmentVariable("refresh_token", data.refresh_token);
  • ログイン時のテストスクリプトでaccess_token, refresh_tokenを環境変数に保存する
スクリーンショット 2018-06-05 17.37.18.png
  • ログイン時に自動でtokenが保存されていることが確認できる
16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?