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を構成する」をお読みください。

もっと詳しく