メインコンテンツへスキップ
JSON Web Encryption(JWE)は、JSON形式で暗号化されたコンテンツ表現のIETF標準です。Auth0では、APIを構成して、アクセストークンの内容をJWE形式で暗号化することができます。 JWEを使用する場合、Auth0はJSON Web Signature(JWS)で署名済みのクレームのセットを含めて、形式のアクセストークンを生成します。その後、この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"
成功応答には暗号化されたアクセストークンが含まれます。
{
  "access_token": "eyJ…XAw",
  "expires_in": 86400,
  "token_type": "Bearer"
}
アクセストークンを使用する場合、リソースサーバーはJWEトークンを復号化して検証しなければなりません。JWEトークンにはヘッダーにメタデータが含まれ、暗号アルゴリズム(alg)、コンテンツの暗号化アルゴリズム(enc)、そしてAPIの構成時に指定されていればペイロードの暗号化に用いたキーID(kid)が記述されます。
{
  …
  "alg": "A256GCM",
  "enc": "RSA-OAEP-256",
  "kid": "my-kid"
}
この情報を使用して、リソースサーバーはJWEトークンを復号化できるはずです。その結果は通常の署名付きJWTとなり、Auth0のテナントキーを使って検証することができます。 APIにJWEを構成する方法については、「JSON Web Encryptionを構成する」をお読みください。

もっと詳しく

I