JWT 認証

JSON Web Token (JWT) は、JavaScript Object Notation (JSON) オブジェクトである 2 つの当事者間で安全に情報を転送するためのオープン標準です。JWT は、認証と承認に使用されます。JWT により single sign-on (SSO) を有効化できるため、ユーザーがクラウド アプリケーションや Web サイトにログオンする回数を最小限にすることができます。

JWT の構造

JWT は、ヘッダー、ペイロード、シグネチャーの 3 つの部分で構成されています。

ヘッダー

ヘッダーは通常、 タイプ (typ) および アルゴリズム (alg) の 2 つの部分で構成されています。アルゴリズムを使用して、シグネチャーが生成されます。

Example:  

{

"typ": "JWT",

"alg": "RS256"

}

RS256 は、このトークンの署名に RS256 - RSA シグネチャーと SHA256 が使用されていることを示します。

ペイロード

ペイロードは、作成するクレームで構成された JSON オブジェクトです。クレームとは、エンティティ (通常はユーザー) と追加のメタデータに関するステートメントです。

Example:  

{

"userId":"jde",

"name":"John Donne",

"email":"jde@company.com",

"roles":["RootAdmin"],

"exp": 1472034208

}

シグネチャー

シグネチャーは、JWT 差出人の ID を確認し、メッセージが改ざんされていないことを保証するために使用します。シグネチャーは、エンコードされたヘッダーとペイロードのことで、秘密鍵で署名されています。通常、シグネチャーの生成と有効化にX.509 証明書が使用されます。QMC の仮想プロキシでは、証明書 (公開鍵を含む) を構成して、シグネチャーを有効化します。

認証は、シグネチャーを確認することで行われます。シグネチャーが有効な場合、Qlik Sense に対してアクセスが許可されます。

サポートするシグネチャー アルゴリズム

Qlik Sense では以下のシグネチャーをサポートしています。

  • RS256 - RSA シグネチャーと SHA256

  • RS384 - RSA シグネチャーと SHA384

  • RS512 - RSA シグネチャーと SHA512

例: 署名付き JWT による Qlik Sense へのアクセス

次の例は、署名付き JWT を使用して Qlik Sense にアクセスする場合の手順です。

  1. クレームのセットを含む JWT が生成され、構成した証明書用の秘密鍵で署名されます。

  2. HTTP 承認ヘッダーで、署名付き JWT を含め、要求がプロキシに送信されます。

  3. プロキシは、構成された証明書の公開鍵を使用して JWT のシグネチャーを有効化します。

  4. プロキシは、構成された属性マッピングを含む Qlik Sense ヘッダーを出力し、バックエンド サービスに呼び出しを転送します。

  5. クライアントはセッションを受信し、その後の呼び出しには JWT を含める必要はありません。

    1. 呼び出しに JWT が含まれている場合、その JWT は有効化され、無効な場合はそのユーザーからのアクセスが拒否されます。
    2. JWT に含まれるユーザーがセッションのために保存されたユーザーと異なる場合、そのユーザーは新しいセッションを取得します。

標準的なフィールド

JWT クレーム内では以下のフィールドを使用できます。

  • Issuer (iss): JWT を発行したプリンシパルを識別します。
  • Subject (sub): JWT のサブジェクトを識別します。
  • Audience (aud): JWT の受信者を識別します。
  • Expiration time (exp): JWT が受領されなくなるまでの有効期限を識別します。
  • Not before (nbf): JWT の受領が開始される時間を識別します。
  • Issued at (iat): JWT が発行された時刻を識別します。
  • JWT ID (jti): トークンを識別します。

制限事項

以下の制限事項があります。

  • 暗号化された JWT はサポートされていません。

    注: HTTPS を使用する場合、JWT を含むすべてのトラフィックは転送中に暗号化されます。
  • 以下の署名アルゴリズムのみサポートしています。

    • RS256 - RSA シグネチャーと SHA256

    • RS384 - RSA シグネチャーと SHA384

    • RS512 - RSA シグネチャーと SHA512