# JWT 身份验证

JSON Web Token (JWT) 是一个开放标准，用于在双方之间以 JavaScript Object Notation (JSON) 对象的形式进行信息安全传输。

JWT 验证服务凭据是否为真，并让服务代表任一用户操作，绕过用户凭据验证。因为 JWT 支持 single sign-on (SSO)（单点登录，SSO），最大程度减少了用户必须登录至云应用程序和网站的次数。

## JWT 结构

JWT 包括三个部分：标头、有效载荷和签名。

### 标头

标头通常包括两个部分：`类型 (typ)` 和`算法 (alg)`。算法用于生成签名。

示例：

`{` `"typ": "JWT",` `"alg": "RS256"` `}`

RS256 指示具有 SHA256 的 RS256 - RSA 签名用于签署该令牌。

### 有效载荷

有效载荷是一种 JSON 对象，包括您想提出的要求。要求是有关实体（通常是用户）和其他元数据的语句。您必须已定义电子邮件属性，或已定义域以及名称属性。

示例：

`{` `"email":"jde@company.com",` `"exp": 1472034208` `}`

示例：

`{` `"name":"jde",` `"domain":"company",` `"exp": 1472034208` `}`

### 签名

签名用于验证 JWT 发件人的身份并确保消息没有被篡改。签名是编码的标头和有效载荷，通过密钥签署。在一般情况下，使用 X.509 证书来生成和验证签名。

身份验证通过验证签名来执行。如果签名有效，则会授予访问权限。

#### 支持的签名算法

在 Qlik NPrinting 中支持以下签名：

* 带 SHA256 的 RS256 - RSA 签名

* 带 SHA384 的 RS384 - RSA 签名

* 带 SHA512 的 RS512 - RSA 签名

## 示例：通过已签署的 JWT 访问 Qlik NPrinting

下面的示例示出了使用已签署的 JWT 获取访问权限所涉及的步骤。

![](https://help.qlik.com/zh-CN/nprinting/May2026/Content/Resources/Images/dr_QlikNPJWTAccess.png)

1. 生成了 JWT，其中包括一组要求，并且通过已配置证书的私钥签署。

2. 请求已发送至代理，在 HTTP 授权标头中包括已签署的 JWT。

3. 代理注入配置的属性映射并将调用转发至后端服务。

4. 客户端将收到会话并且后续的调用无需包括 JWT。

   1. 如果调用包括 JWT，将进行验证，并且如果其无效，将拒绝用户访问。

   2. 如果 JWT 中的用户不同于为会话存储的用户，用户将获得新会话。

## 标准字段

JWT 要求中的以下字段由 Qlik NPrinting 使用：

* 到期时间 (exp)：确定 JWT 不再被接受的到期时间。
* 不早于 (nbf)：确定接受 JWT 的起始时间。

信息注释您可在自己的 JWT 令牌中配置其他字段，但是仅以上所列的那些将被 Qlik NPrinting 考虑。

## 限制

存在以下限制：

* 不支持加密的 JWT。

* 仅支持以下签名算法：

  * 带 SHA256 的 RS256 - RSA 签名

  * 带 SHA384 的 RS384 - RSA 签名

  * 带 SHA512 的 RS512 - RSA 签名