メインコンテンツへスキップ
Auth0 が発行するすべての は、JSON Web Signatures (JWSs) です。つまり、暗号化されているのではなく署名されています。JWS は、JSON ベースのデータ構造を使用して、 または Message Authentication Code (MAC) で保護されたコンテンツを表します。 適切な形式の JWT は、ドット (.) で区切られた 3 つの Base64url エンコード文字列を連結したもので構成されます。
  • JOSE ヘッダー: トークンの種類と、その内容を保護するために使用される暗号アルゴリズムに関するメタデータが含まれます。
  • JWS ペイロード (クレーム のセット) : ユーザーの識別情報や許可されている権限など、検証可能なセキュリティに関する記述が含まれます。
  • JWS 署名: トークンが信頼でき、改ざんされていないことを検証するために使用されます。JWT を使用する場合は、保存して使用する前に必ず署名を確認してください。
JWT は通常、次のような形式です。
JSON Web Token
JWT の内部を自分で確認するには、JWT.io Debugger を使用します。これにより、JWT が適切な形式であることをすばやく確認し、さまざまな クレーム の値を手動で調べることができます。
JWT Debugger

JOSE ヘッダー

使用される暗号操作とそのパラメーターを記述した JSON オブジェクトです。JOSE (JSON Object Signing and Encryption) ヘッダーは、通常、名前と値の組で構成される一連のヘッダーパラメーターで構成され、使用するハッシュアルゴリズム (例: HMAC SHA256 または RSA) や JWT のタイプなどが含まれます。
{
      "alg": "HS256",
      "typ": "JWT"
    }

JWS ペイロード

ペイロードには、エンティティ (通常はユーザー) に関する情報と、クレームと呼ばれる追加の属性が含まれます。この例でのエンティティはユーザーです。
{
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
    }
JWT のクレームを扱う際は、クレームの種類と命名規則について理解しておく必要があります。

JWS 署名

署名は、JWT の送信者が正当な送信元であることを検証し、メッセージが途中で改ざんされていないことを保証するために使用されます。 署名を作成するには、Base64 エンコードされたヘッダーとペイロードをシークレットとともに用意し、ヘッダーで指定されたアルゴリズムで署名します。 たとえば、HMAC SHA256 アルゴリズムを使用してトークンの署名を作成する場合は、次のようにします。
HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)

詳細