JWT 身份验证

JSON Web Token (JWT) 是一个开放标准,用于在双方之间以 JavaScript Object Notation (JSON) 对象的形式进行信息安全传输。JWT 用于身份验证和授权。因为 JWT 支持 single sign-on (SSO),有助于最大程度减少用户必须登录至云应用程序和网站的次数。

JWT 结构

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

标头

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

Example:  

{

"typ": "JWT",

"alg": "RS256"

}

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

有效载荷

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

Example:  

{

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

"exp": 1472034208

}

Example:  

{

"name":"jde",

"domain":"company",

"exp": 1472034208

}

签名

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

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

支持的签名算法

Qlik NPrinting 中支持以下签名:

  • SHA256RS256 - RSA 签名

  • SHA384RS384 - RSA 签名

  • SHA512RS512 - RSA 签名

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

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

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

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

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

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

    1. 如果调用包括 JWT,将进行验证,并且如果其无效,将拒绝用户访问。
    2. 如果 JWT 中的用户不同于为会话存储的用户,用户将获得新会话。

标准字段

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

  • 到期时间 (exp):确定 JWT 不再被接受的到期时间。
  • 不早于 (nbf):确定接受 JWT 的起始时间。
备注: 您可在自己的 JWT 令牌中配置其他字段,但是仅以上所列的那些将被 Qlik NPrinting 考虑。

限制

存在以下限制:

  • 不支持加密的 JWT。

  • 仅支持以下签名算法:

    • SHA256RS256 - RSA 签名

    • SHA384RS384 - RSA 签名

    • SHA512RS512 - RSA 签名