JSON Web Tokens (JWTs)是现代 web 应用程序的常见认证方式。它们是一种安全的方式,在服务器和客户端之间传输用户信息。使用 JWTs 还有一个优助点是可以大大减轻基于用户的并发请求的服务器的负担。在 Node.js 中,我们可以使用 jsonwebtoken
npm 包来生成 JWTs,但在客户端或其他服务端应用程序中使用这些令牌之前需要验证它们。
jwt-validator
是一个便捷的 npm 包,它提供了一种验证 JWTs 的简单方法。在本篇文章中,我们将介绍 jwt-validator
的安装和使用方法和注意事项,并且提供了一些实用的示例代码。
安装
我们可以通过在终端中执行以下命令来安装 jwt-validator
:
npm install jwt-validator --save
使用
下面是使用 jwt-validator
来验证 JWTs 的基本代码示例:
-- -------------------- ---- ------- ----- ------------ - ------------------------- -- ------- --- ----- ----- - --------------------------------- ------ -- ------ ----- ------- - - ---- -------- ---- -------- ---- -------- ----------------- - -- -- -- --- ------------------- ------------ -------- ----- -------- -- - -- ----- - ------ ---------------------- ------ -------------- --- - -- ---- -- ------ -- --- ---
在上面的代码中,我们首先从请求头中获取 JWT,之后使用 jwt-validator
中的方法来验证它。可以看到使用 jwt-validator
很简单,只需要提供以下参数:
token
:要验证的 JWT,通常从请求头中提取。secretOrPublicKey
:JWT 签名使用的安全密钥。options
:一个包含用于验证 JWT 的所有选项(例如过期时间,签发人,受众等)的对象。callback
:一个回调函数,该函数将接收验证结果(成功或失败)。
在 options
对象中,选项可能会有所不同,具体取决于您的应用程序。下面是一些常见选项:
iss
:JWT 签发人(Issuer)的标识符,用于验证发送 JWT 的应用程序。sub
:JWT 主题(Subject)的标识符,用于验证 JWT 所针对的对象。aud
:JWT 的受众(Audience),用于验证 JWT 接收方是否是正确的。exp
:JWT 的过期时间(Expires),用于保护 JWT 不会在过期后被接受。nbf
:JWT 的开始时间(Not Before),用于保护 JWT 不会在其开始时间之前被接受。
示例
下面是一些常见用例的示例:
1. 验证 JWT 是否过期
-- -------------------- ---- ------- ----- ------------ - ------------------------- ----- ----- - -- ------- --- ----- ----------- - -- --------------- ----- ------- - - ------- ---- -- ------------------- ------------ -------- ------------- -------- - -- ----- - ------ ---------------------- ------ ------ -------- --- - ---- - -- --- ---- -- ------ -- --- - ---
2. 自定义验证选项
-- -------------------- ---- ------- ----- ------------ - ------------------------- ----- ----- - -- ------- --- ----- ----------- - -- --------------- ----- ------- - - ---- -------- ---- -------- ---- -------- -- --- ---- --- ----------------- ----------------- -- -- ------------------- ------------ -------- ------------- -------- - -- ----- - ------ ---------------------- ------ -------- ------ --- - ---- - -- --- ---- -- ------ -- --- - ---
注意事项
- 使用
jwt-validator
时必须提供有效的 JWT 和相应的验证选项。 - 请勿在 HTTP 请求中发送未加密的 JWT,因为它们可以被恶意方捕获并访问用户的敏感信息。
- 存储该密钥时必须非常小心,如果这个密钥丢失或被窃取,攻击者将能够生成和使用任何签名过的 JWT,也就是说任何使用该 JWT 签名的应用程序密钥都会被暴露出来。
结论
JWTs 是非常有用的,但在使用它们之前,必须先验证其有效性。jwt-validator
是一个非常好用的 npm 包,它提供了一种验证 JWTs 的简单方法。在学习和实践中,不要忘记上面的注意事项,并尝试使用不同的验证选项来适应您的应用程序的不同需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005609d81e8991b448deda3