JSON ウェブトークン(JWT)の形式
このドキュメントでは、Drive API について説明しています。Drive(クラシック)API を使用している場合は、「Drive(クラシック)の JWT のリファレンスガイド」をご覧ください。
JSON Web Tokens(JWT)は、DoorDash の API との通信に使用される認証用のトークン形式です。情報に関して署名することで、当事者同士が安全に通信することができます。JWT により、サービス利用の際にユーザーが秘密情報を送信することなく信用を証明することが可能になります。また、JWT の作成は、すべての一般的なプログラミング言語でサポートされています。
JWT を使用した API の認証
API で認証を行うには、JWT をベアラートークンとして認証ヘッダーに提供します。
Authorization: Bearer [JWT]
JWT の構造
JWT は、ピリオドで区切られた以下の 3 つの部分で構成されています。
- ヘッダー
- ペイロード
- 署名
結果は、「aaa.bbb.ccc
」のような形をしたトークンです。
ヘッダー
ヘッダーには、トークンの署名に使用されたアルゴリズムが指定されます(HMAC SHA 265(HS265)と DoorDash JWT のバージョン(v1))
{
"alg": "HS256",
"typ": "JWT",
"dd-ver": "DD-JWT-V1"
}
ヘッダーは Base64url でエンコードされ、JWT の最初の部分を構成します。
ペイロード
json オブジェクトとしてのトークンの内容です。このコンテンツは、受信者が信頼できる内容です。
ペイロード形式
{
"aud": "doordash",
"iss": DEVELOPER ID,
"kid": KEY ID,
"iat": ISSUED AT,
"exp": EXPIRATION
}
aud\: Audience(オーディエンス)常に「doordash」に設定します。
iss\: Issuer(発行者)デベロッパー ID(UUID 形式)に設定します。
kid\: Key ID(キー ID)JWT の署名に使用された Key ID(UUID 形式)に設定します。
iat\: Issued At(発行時間)トークンが作成された時間のことです。エポック秒でフォーマット化されます。iat を将来にすることはできません。
exp\: Expiration(有効期限)トークンの有効期限のことです。エポック秒でフォーマット化されます。exp の最大値は、発行された時刻から 30 分(1800 秒)後です。
例
{
"aud": "doordash",
"iss": "582e4f20-0f48-4bc2-99c2-e094675e2919",
"kid": "585698aa-2aa6-4bb4-8b3f-dd9d3f47dc28",
"iat": 1636463841,
"exp": 1636465641
}
ペイロードは Base64url でエンコードされ、JWT の 2 番目の部分を構成します。
署名
署名は、コンテンツの真正性を確認するために使用されます。署名シークレットを持っている人だけが、適切な署名をすることができます。署名は、HMAC SHA256(HS256)アルゴリズムによって計算されます。
署名は Base64url でエンコードされ、JWT の 3 番目の部分を構成します。
機密保持
署名シークレットはパスワードと同じように保護しましょう。シークレットを安全な保管場所で保管し、盗難や悪用から守りましょう。