JSON Web Token (JWT)は、情報をJSONオブジェクトとして当事者間で安全に伝送するためのオープンスタンダードです。ユーザーの認証やクライアントとサーバー間での情報の安全な伝送によく使用されます。
ユーザーがログインすると、サーバーはJWTを生成し、ヘッダー、ペイロード、署名の3つの部分で構成されます。
ヘッダーには通常、トークンの種類やそのセキュリティを担保するために使用される暗号化アルゴリズムが含まれています。ヘッダーはBase64Urlでエンコードされます。
ペイロードにはクレームが含まれており、ユーザーに関する主張や追加データが記載されています。クレームには、ユーザーID、ユーザー名、役割、およびその他の関連データが含まれることがあります。ペイロードもBase64Urlでエンコードされます。
署名は、ヘッダー、ペイロード、およびヘッダーで指定されたアルゴリズムを使用してエンコードされた秘密鍵によって作成されます。これにより、トークンの整合性が保たれ、サーバーがその真正性を確認できます。署名は、エンコードされたヘッダーとペイロードに付加され、完全なJWTが形成されます。
JWTが作成されると、それはクライアントに送信され、クライアントはそれを保存し、後続のリクエストと共に送信します。クライアントは通常、HTTPリクエストのAuthorization
ヘッダーでJWTをBearerトークンとして含めます。
JWTを受け取ると、サーバーは秘密鍵を用いてその署名を検証します。署名が有効であれば、サーバーはヘッダーとペイロードの情報をデコードしてユーザー認証を行います。JWT内の情報は、データベースを照会したり追加の認証チェックを行うことなくサーバーが信頼できるため、JWTは効率的でスケーラブルな認証メカニズムとなります。
トークン認証は、ユーザー名とパスワードの代わりにアクセストークンを使用してリソースにアクセスする認証方法です。このトークンは通常、認証サーバーによって発行され、各リクエストと共に認証の証拠として送信されます。トークンベースの認証は、従来のユーザー名とパスワードによる認証に比べていくつかの利点があります:
OAuth 2.0は、サードパーティアプリケーションがユーザーのリソースへの限定的なアクセスを取得できるようにするオープンスタンダードであり、認可フレームワークです。ユーザーが外部アプリケーションに対してサードパーティプラットフォーム上のデータへのアクセス許可を与えるためによく使用されます。OAuth 2.0は、JSON Web Tokens (JWT) に基づいて認証および認可を提供します。
OAuth 2.0には、リソースオーナー(リソースを所有するユーザー)、クライアント(サードパーティアプリケーション)、認可サーバー(アクセストークンを発行するサーバー)、およびリソースサーバー(保護されたリソースを保持するサーバー)など、いくつかの当事者が関与します。
OAuth 2.0フローの過程では、クライアントはリソースオーナーから認可グラントを取得します。クライアントは、このグラントを認可サーバーと交換してアクセストークンを取得します。アクセストークンは、リソースサーバー上の保護されたリソースにアクセスするために必要な情報を含むJWTです。このトークンは、その後クライアントによってユーザーのリソースにアクセスするために使用されます。
OAuth 2.0とJWTsを使用することにより、アプリケーションは幅広いプラットフォーム上でユーザーデータへの安全かつ管理されたアクセスを提供できます。