#json #jwt #web #tokens #algorithm #done #right

jwt2

JSON Web Tokens 做得正确……希望如此。

1个不稳定发布

0.1.0-alpha.02024年8月8日

#820密码学

Download history 92/week @ 2024-08-05

92 每月下载量

Apache-2.0

73KB
1.5K SLoC

jwt2: 做得正确的 JSON Web Tokens。

jwt2 是一个旨在正确处理 JSON Web Tokens 的crate。

它被设计为 jsonwebtoken crate 的替代品。

警告!

jwt2 目前不稳定且易于更改。虽然我对目前的代码相当满意,但API可能随时会进行重大更改。

此crate提供的算法都经过了某种程度的测试,因此可以在实际代码中“安全”地使用。如果您想找一个经过测试的crate,请尝试上述的 jsonwebtoken crate。

*可能并非真正经过测试。不过,它的下载量超过了2400万,所以这也算是一个优点。

目标和非目标

jwt2 是(应该是)

  • 一个帮助您构建、解码、签名和验证 JSON Web Tokens 的库。
  • 与尽可能多的平台兼容。
  • 符合标准。
  • 正确。

jwt2 不是也不应该是

  • 一个管理应用程序会话的库。
  • 一个围绕获取会话令牌的授权API的包装器。

虽然 jwt2 可能不一定能满足上述所有目标,但希望它在某个时候能够实现。

功能门

jwt2 实现的所有算法都受以下功能的限制。默认情况下,没有任何一个功能被启用。

  • hmac-sha2:定义了 HS256HS384HS512 算法。
  • rsa-pkcs1:定义了 RS256RS384RS512 算法。
  • ecdsa:定义了 ES256ES384 算法。
  • rand:提供生成密钥的实用函数。

    此功能尚未完成,也未经过适当的测试。

使用的库

jwt2 使用易于使用的 RustCrypto crate系列作为所有算法的后端实现。

  • HS256HS384HS512使用了hmacsha2库。
  • RS256RS384RS512使用了rsasha2库。
  • ES256ES384使用了p256p384库。

    p256p384警告,它们包含的EC算法从未经过独立审计。对于那些认为这是不可接受的人,请不要使用ES256ES384算法。

  • Base64编码和解码使用base64ct库。

JSON功能由SerdeSerde JSON库提供。

参考资源

jwt2在追求符合标准的过程中,主要参考并有时结合了相关标准的文档。

相关标准是以下RFC

为了测试jwt2的正确性,除了代码中包含的测试外,我还交叉引用了jwt.io中的示例值,假设它们的正确性。

许可证

jwt2采用Apache 2.0许可证。

Copyright 2024 tecc <[email protected]>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

       https://apache.ac.cn/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

依赖项

~0.8–2.8MB
~57K SLoC