JWT 認証
JSON Web Token (JWT) is an open standard for secure transmission of information between two parties as a JavaScript Object Notation (JSON) object. JWT is used for authentication and authorization.JWT により single sign-on (SSO) を有効化できるため、ユーザーがクラウド アプリケーションや Web サイトにログオンする回数を最小限にすることができます。
JWT の構造
JWT は、ヘッダー、ペイロード、シグネチャーの 3 つの部分で構成されています。
ヘッダー
ヘッダーは通常、 タイプ (typ) および アルゴリズム (alg) の 2 つの部分で構成されています。アルゴリズムを使用して、シグネチャーが生成されます。
{
"typ": "JWT",
"alg": "RS256"
}
RS256 は、このトークンの署名に RS256 - RSA シグネチャーと SHA256 が使用されていることを示します。
ペイロード
ペイロードは、作成するクレームで構成された JSON オブジェクトです。クレームとは、エンティティ (通常はユーザー) と追加のメタデータに関するステートメントです。
{
"userId":"jde",
"name":"John Donne",
"email":"jde@company.com",
"roles":["RootAdmin"],
"exp": 1472034208
}
シグネチャー
シグネチャーは、 差出人の ID を確認し、メッセージが改ざんされていないことを保証するために使用します。JWT シグネチャーは、エンコードされたヘッダーとペイロードのことで、秘密鍵で署名されています。通常、シグネチャーの生成と有効化にX.509 証明書が使用されます。QMC の仮想プロキシでは、証明書 (公開鍵を含む) を構成して、シグネチャーを有効化します。
認証は、シグネチャーを確認することで行われます。シグネチャーが有効な場合、Qlik Sense に対してアクセスが許可されます。
サポートするシグネチャー アルゴリズム
Qlik Sense では以下のシグネチャーをサポートしています。
-
RS256 - RSA シグネチャーと SHA256
-
RS384 - RSA シグネチャーと SHA384
-
RS512 - RSA シグネチャーと SHA512
例: 署名付き JWT による Qlik Sense へのアクセス
次の例は、署名付き JWT を使用して Qlik Sense にアクセスする場合の手順です。
-
クレームのセットを含む JWT が生成され、構成した証明書用の秘密鍵で署名されます。
-
HTTP 承認ヘッダーで、署名付き JWT を含め、要求がプロキシに送信されます。
-
プロキシは、構成された証明書の公開鍵を使用して JWT のシグネチャーを有効化します。
-
プロキシは、構成された属性マッピングを含む Qlik Sense ヘッダーを出力し、バックエンド サービスに呼び出しを転送します。
-
クライアントはセッションを受信し、その後の呼び出しには JWT を含める必要はありません。
- 呼び出しに JWT が含まれている場合、その JWT は有効化され、無効な場合はそのユーザーからのアクセスが拒否されます。
-
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
-