1个不稳定发布
0.1.0-alpha.0 | 2024年8月8日 |
---|
#820 在 密码学
92 每月下载量
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
:定义了HS256
、HS384
和HS512
算法。rsa-pkcs1
:定义了RS256
、RS384
和RS512
算法。ecdsa
:定义了ES256
和ES384
算法。rand
:提供生成密钥的实用函数。此功能尚未完成,也未经过适当的测试。
使用的库
jwt2
使用易于使用的 RustCrypto
crate系列作为所有算法的后端实现。
HS256
、HS384
和HS512
使用了hmac
和sha2
库。RS256
、RS384
和RS512
使用了rsa
和sha2
库。ES256
和ES384
使用了p256
和p384
库。p256
和p384
警告,它们包含的EC算法从未经过独立审计。对于那些认为这是不可接受的人,请不要使用ES256
或ES384
算法。- Base64编码和解码使用
base64ct
库。
JSON功能由Serde和Serde JSON库提供。
参考资源
jwt2
在追求符合标准的过程中,主要参考并有时结合了相关标准的文档。
相关标准是以下RFC
- RFC 7515: JSON Web Signature (JWS)
- RFC 7516: JSON Web Encryption (JWE)
- RFC 7518: JSON Web Algorithms (JWA)
为了测试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