Laravel Passportのルーティングをカスタマイズする

LaravelにPassportという標準ライブラリを導入することでOAuth認証を実装することが出来ますが、そのままではエンドポイントが標準のままなのでセキュリティ的にどうなんだろう…。

ということで今回はこれをカスタマイズしていきます。

ラッパークラスの作成

今回パスワード認証、すなわちPassword Grantなアクセストークンのみ利用することを想定します。

公式ドキュメントにもあるとおり、Password Grantなアクセストークンを取得するEndpointは/oauth/tokenです。例としてコレをapi/v1/auth/accessTokenに修正してみましょう。

Passportライブラリ本体は\Laravel\Passport\Passportです。まずはこれを継承する独自のラッパークラスを作成します。今回名前空間(namespace)がぐちゃぐちゃになるのも嫌だったので~/TeensTown/Passport/Passport.phpを作成しました。

独自実装の名前空間を追加する際はcomposer.jsonによる設定が必要です。

上記のような追加設定を行いましょう。

次に、独自拡張のPassport.phpでroutesメソッドをoverrideします。

続いて\Laravel\Passport\RouteRegistrarを継承する~/TeensTown/Passport/RouteRegistrar.phpを作成します。

今回はAccess Tokenのみの想定なのでforAccessTokensメソッドだけ利用していますが、必要に応じて書き換えてください。

ルーティングの修正

routes/api.phpに、今回実装したPassport.phpによるルーティングを適用します。

技術ブログでおまじないのように書かれるPassport::routes();ですが、もちろん通常のルーティングのようにPrefixやMiddlewareも実装できます。独自のラッパークラスをuseするのを忘れずに

タイトルとURLをコピーしました