web-dev-qa-db-ja.com

Laravel Passport vs JWT vs Oauth2 vs Auth0

LaravelのAPI認証タイプに関する混乱?

現在、LaravelでAPIを作成する方法を学んでいます。この混乱する概念に気づきました。数日間の研究と実践の後、この概念を十分に理解してミニを作成できました-ガイド:私は多くの別々のウェブページを調べなければならなかったので、それらの間の関係を説明するために最善を尽くします。

17
Luis Lopez

これらの概念は何ですか?

  • Passportは、Oauth2とJWTを実装する公式のLaravelパッケージです。
  • Auth は認証および承認サービスです。 API認証のための一種の「オールインワン」ソリューションです。デフォルトでJWTを実装し、Oauth2と 他の多くのプロトコル を実装できます。
  • OAuth2は、アプリケーション(構築するアプリケーション)を有効にして、Facebook、GitHubなどのユーザーアカウントへの制限付きアクセスを許可する承認フレームワークまたはプロトコルです。アプリが大きくなったと想像してください。 「ここでアプリ名でサインイン」を提供したり、他のサードパーティアプリケーションにユーザーアカウントへの制限付きアクセスを提供したりするのに十分です。 Oauth2を使用すると、 他の多くのもの でこれを実現できます。
  • [〜#〜] jwt [〜#〜] はトークン形式です。つまり、トークンを作成するためのデータの配置方法です。別のトークン形式はSWTです。

言い換えると:

  • Passportは、Oauth2とJWTを実装します。
  • Auth0は-> Oauth2またはLDAP、OPEN IDなどのような他の多くのプロトコルを実装できます...
  • Oauth2は-> JWTまたはSWTなどの他のトークン形式を実装できます...

何を使うべきですか?

初心者がLaravelと互換性のある独自のOauth2実装を作成するのはクレイジーでしょう。 Oauth2出力。つまり、3つのパッケージオプションがあります。 パスポートtymondesigns/jwt-auth および Auth .

JWT(tymondesigns/jwt-authパッケージ)は、電子メールとパスワード認証のみを作成するのに適しています。ただし、基本的な電子メールとパスワードの認証にPassportを使用する場合、「Oauth2実装」がアプリのパフォーマンスに影響することを心配する必要はありません(それほど多くはありません)。違いは、威圧的な移行テーブルとルートがすべてPassportによって生成されるときですが、少し練習すれば、それらを理解できるようになります。 Auth0 seemsセットアップが高速になりますが、一部のユースケースでは、コミュニティLaravelパッケージで作業することの安全性を感じない以外に、誇張しすぎる場合があります。

実際の一致は、Auth0とPassportの間にあります。 Auth0は、パスポートと比較してスイスアーミーナイフです。すぐに使用できる非常に優れたダッシュボードがあり、APIのあらゆる側面を管理できます。サードパーティ認証から、そのAPIを使用できるアプリ(モバイル、ウェブ、デスクトップ)を追加します。パスポートは、より繊細なナイフと比較できます。特にLaravel向けに構築されており、長期的には独自のニースおよびカスタムダッシュボードを実装して、APIクライアントを管理できます。

結論

本当の選択はPassportとAuth0の間でなければならないと思います。 LaravelでAPIを構築するかどうかは、LaravelよりもAPIの世界に詳しくなるかどうかによって異なります。私の場合、Auth0よりもPassportを優先し、最後にJWTを優先します。その理由は次のとおりです。

  • 私は公式のLaravelパッケージを使いたいです。
  • プロジェクトに追加されたルートとテーブルに加えて、それは影響を受けません。
  • 最も基本的なAPI認証から始めて拡張したい場合は、はるかに簡単です。

最後の点についてはまだ話していますが、Auth0コミュニティは小さいと言う人もいます。基本的にそうです。しかし、それは素晴らしいクライアントサポート要員もいます。


PassportおよびOauth2のチュートリアル

LaravelとOauth2 Docsのトークンの説明は少し難しいかもしれません。 パスポートの(したがってOauth2)異なるタイプのトークンとそのユースケース の良い説明です。チュートリアルの「ルート」の部分がわからなかったので、チュートリアルの部分はお勧めしません。

これは Good Passport Video Tutorial で、API呼び出しにPostMan Chromeアプリも使用します。このAPIを初めて使用する方は、PostManなどのアプリを使用すると、「curl」Linux/Macコマンドを使用するよりも作業がはるかに簡単になります。シリーズ全体またはPassportの一部だけを見ることができます。現時点では、ビデオ4にこだわっています。 現在未解決 スタックオーバーフローの質問

リソース

リソースの多くはすべて記事の上部にありますが、ここにもいくつかあります。

65
Luis Lopez