Fendo181 / lumen_sample_api

Lumenで堅牢なAPIを作るサンプルリポジトリです。
1 stars 0 forks source link

LumenでPassportを使ってOAuth2.0を実装する。 #4

Open Fendo181 opened 6 years ago

Fendo181 commented 6 years ago

困っていること

LumenでのOAuth2.0の実装方法がわからないので、実際に手元でLumen用のPassportを使って検証して作ってみる。

使うライブラリー

Passportを使わない方法もある。

ゴール

相談したいこと

(ゴールにいたるために、悩んでいること、決めて欲しいこと、助言してもらいたいことを書きます。)

関係者

(相談したい人にメンションします。)

Fendo181 commented 6 years ago

調べてみると、Lumen専用のpassportがあるので、こちらを使って導入する。 逆にLaravel/passportの方はインストールができなかった。

導入の手順

1パッケージをインストール

dusterio/lumen-passport

#composerで導入する。
composer require dusterio/lumen-passport

# もしくはcomposer.jsonに以下のように追加する。
{
    "require": {
        "dusterio/lumen-passport": "^0.2.0"
    }
}

2サービスププロバイダーに登録する(bootstrap/app.php file)

今導入した、lumen-passportを使えるようにする為、サービスプロバイダーに登録します。

// Enable Facades
$app->withFacades();

// Enable Eloquent
$app->withEloquent();

// Enable auth middleware (shipped with Lumen)
$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);

// Finally register two service providers - original one and Lumen adapter
$app->register(Laravel\Passport\PassportServiceProvider::class);
$app->register(Dusterio\LumenPassport\PassportServiceProvider::class);

3マイグレーション

新しくPassportテーブルを作成します。

# Create new tables for Passport
php artisan migrate

Migrating: 2016_06_01_000001_create_oauth_auth_codes_table
Migrated:  2016_06_01_000001_create_oauth_auth_codes_table
Migrating: 2016_06_01_000002_create_oauth_access_tokens_table
Migrated:  2016_06_01_000002_create_oauth_access_tokens_table
Migrating: 2016_06_01_000003_create_oauth_refresh_tokens_table
Migrated:  2016_06_01_000003_create_oauth_refresh_tokens_table
Migrating: 2016_06_01_000004_create_oauth_clients_table
Migrated:  2016_06_01_000004_create_oauth_clients_table
Migrating: 2016_06_01_000005_create_oauth_personal_access_clients_table
Migrated:  2016_06_01_000005_create_oauth_personal_access_clients_table

認証周りのテーブルが一気にできた感がある。すごい。

4secret keyを作成する。

php artisan passport:install                                                                                  [~/src/git.pepabo.com/goope/core-api][add-passprt]

Encryption keys generated successfully.
# Access
Personal access client created successfully.
Client ID: 1
Client Secret: j9QLvQR0ElnkiVsfBTKHCvd1yo85NzmayGZqHBTB
# Grant
Password grant client created successfully.
Client ID: 2
Client Secret: dQeIBGXn5WyV4ZcxZ0Suozpjje2f9Q4VuGZa5ZBt

参考

Fendo181 commented 6 years ago

思ったよりも設定がかかりそうな気がしてきた...

Fendo181 commented 6 years ago

jwt-oauthを先に試してみます。