web-dev-qa-db-ja.com

OAuth or JWT?使用するものとその理由

私はトークンベースの認証について学び始めており、Laravel 5.でそれを実装する方法を学ぼうとしています。これらの両方のテクノロジーに新しい。

Mediumのこの記事 一緒に行くべきだと言っています lucadegasperi/oauth2-server-laravel Githubの星の数から判断すると、コミュニティで非常に人気のあるパッケージであると確信していますそして、私をそれに導いた参考文献の数。これは、OAuth実装で私を助けると思われます。

Scotch.ioのこの他の記事 を使用することをお勧めします tymondesigns/jwt-auth これもGithubの星の数から判断すると非常に人気があります。

この時点では、私は初心者の開発者であり、どちらとも使用していないため、どちらを使用するかについて優柔不断です。

誰かが私にそれぞれの長所と短所を教えてもらえますか?私のプロジェクトの種類によって、どの種類を使用すべきかが決まりますか?そしてどうやって?

さらに、どちらかを選択するべきだという議論をしている場合、それらから始めるのに役立つ良いリソースを指摘してもらえますか。もちろん、自分で提供した2つのリンク以外に。

26
Rohan

JWTは単純な認証プロトコルです。Oauthは認証フレームワークです。

経験豊富な開発者は、Oauthを完全に理解して実装するのに約1か月かかります。経験豊富な開発者であれば、約1日で仕様を読んでJWTプロトコルを入手できます。つまり、基本的には特定のユースケースに要約されます。

APIへの単純なステートレスhttp認証が必要な場合、JWTは初心者デベロッパーにとっても素晴らしく、比較的迅速に実装できます。

あなたのためのいくつかのJWTリソース:

そして、Oauthリソース:

31
Gravy

JWTはJSON Web Tokenの略で、名前が示すとおり、クライアントとサーバーの2つのパーティ間で保護されたデータを転送するためのトークンにすぎません。

他のOauth2は、セキュリティで保護されたデータを転送するために2者を認証および承認するのに役立つ、一般にフレームワークと呼ばれる一連のルールまたは手順です。

次の図は、oauth2の仕組みを説明しています

Authorization Code flow

図のステップのより詳細な説明はここにあります:

  1. アプリケーションは、ユーザーからサービスリソースにアクセスするための承認を要求します
  2. ユーザーがリクエストを承認した場合、アプリケーションは承認付与を受け取ります
  3. アプリケーションは、自身のIDの認証と許可付与を提示することにより、許可サーバー(API)からアクセストークンを要求します。
  4. アプリケーションIDが認証され、認可付与が有効な場合、認可サーバー(API)はアプリケーションにアクセストークンを発行します。承認が完了しました。
  5. アプリケーションはリソースサーバー(API)からリソースを要求し、認証用のアクセストークンを提示します
  6. アクセストークンが有効な場合、リソースサーバー(API)はリソースをアプリケーションに提供します

これらは両方とも、安全なデータの転送に一緒に使用できます。

Oauth2の3番目と6番目のステップでJWTが登場する場所

13
Samuel J Mathew

JSON Web Token(JWT)は、当事者間で情報をJSONとして安全に送信するためのコンパクトで自己完結型の方法を定義するオープンスタンダード(RFC 7519)です。オブジェクト。この情報はデジタル署名されているため、検証および信頼できます。 JWTは、秘密(HMACアルゴリズムを使用)またはRSAを使用する公開/秘密キーペアを使用して署名できます。

OAuth 2.0は承認用のプロトコルです。 OAuth 2.0は、2006年に作成された元のOAuthプロトコルで行われた作業に取って代わります。OAuth 2.0は、 Webアプリケーション、デスクトップアプリケーション、携帯電話、リビングルームデバイスに特定の承認フローを提供する。この仕様はIETF OAuth WG内で開発されています。

-OAuthさまざまな種類のトークンがあります。

1)WS-Securityトークン、特にSAMLトークン

2)JWTトークン

3)レガシートークン

4)カスタムトークン

JWTとOAuth2を比較するときに理解する最も重要なことは、それらが似ていないことです。または互換性がありません。

JWTは認証プロトコルですこれは、署名付きアクセストークンの発行と検証のための厳密な命令セットであることを意味します。トークンには、アプリがユーザーへのアクセスを制限するために使用するクレームが含まれています。

** OAuth2は承認フレームワークです**一方、OAuth2は、プライベート設定とパブリック設定の両方で、ユーザーとアプリケーションに他のアプリケーションへの特定のアクセス許可を許可するための非常に詳細なガイドラインと考えられるフレームワークです。

いくつかの良いリンク:

8
vaquar khan