JSON Web Encryption
JSON Web Encryption(JWE)は、JSON形式で暗号化されたコンテンツ表現のIETF標準です。Auth0では、APIを構成して、アクセストークンの内容をJWE形式で暗号化することができます。
JWEを使用する場合、Auth0はJSON Web Signature(JWS)で署名済みのクレームのセットを含めて、JWT形式のアクセストークンを生成します。その後、このJWTアクセストークンはJWEで暗号化され、JWEコンパクトシリアル化形式で表されます。そうすることで、アクセストークンのクレームに含まれるデータの機密性を維持しながら、署名を用いて整合性を確実に保護することができます。
アクセストークンを生成して検証する
それぞれのAPIにJWEを構成します。JWEを使用するようにapiIdentifier
を構成済みという想定で、以下のサンプルコードはマシンツーマシン(M2M)アプリケーションのクライアント資格情報付与を介して、暗号化されたアクセストークンを要求します。JWEはAuth0が対応するすべての付与タイプで利用できます。
curl -X POST --location "https://{domain}/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id={clientId}&client_secret={clientSecret}&audience={apiIdentifier}&grant_type=client_credentials"
Was this helpful?
成功応答には暗号化されたアクセストークンが含まれます。
{
"access_token": "eyJ…XAw",
"expires_in": 86400,
"token_type": "Bearer"
}
Was this helpful?
アクセストークンを使用する場合、リソースサーバーはJWEトークンを復号化して検証しなければなりません。JWEトークンにはヘッダーにメタデータが含まれ、暗号アルゴリズム(alg
)、コンテンツの暗号化アルゴリズム(enc
)、そしてAPIの構成時に指定されていればペイロードの暗号化に用いたキーID(kid
)が記述されます。
{
…
"alg": "A256GCM",
"enc": "RSA-OAEP-256",
"kid": "my-kid"
}
Was this helpful?
この情報を使用して、リソースサーバーはJWEトークンを復号化できるはずです。その結果は通常の署名付きJWTとなり、Auth0のテナントキーを使って検証することができます。
APIにJWEを構成する方法については、「JSON Web Encryptionを構成する」をお読みください。