#jwt #json #auth-token #oidc #security #web

compact_jwt

OIDC和其他应用程序的JWT的最小实现

28次发布

0.4.2 2024年7月19日
0.4.0-dev2024年4月11日
0.3.5 2024年3月12日
0.3.3 2023年11月30日
0.1.7 2021年11月13日

#134 in 认证

Download history 9900/week @ 2024-04-29 6558/week @ 2024-05-06 10950/week @ 2024-05-13 18393/week @ 2024-05-20 9347/week @ 2024-05-27 9243/week @ 2024-06-03 15190/week @ 2024-06-10 8381/week @ 2024-06-17 10485/week @ 2024-06-24 9362/week @ 2024-07-01 10078/week @ 2024-07-08 6614/week @ 2024-07-15 8736/week @ 2024-07-22 7238/week @ 2024-07-29 8177/week @ 2024-08-05 11911/week @ 2024-08-12

36,418每月下载量
15个crates(6个直接)中使用

MPL-2.0许可

225KB
4.5K SLoC

Compact JWT / JWE

Json Web Tokens (JWT) 是一种流行的创建可由客户端和服务器验证的签名透明令牌的方法。它们在OpenID Connect等标准中得到体现,这使得它们成为许多现代Web认证系统的广泛和必需组件。

Json Web Encryption (JWE) 是一种偶尔用于向接收者发送秘密或为服务创建不透明令牌的方法。

然而,JWE、JWT和Json Web Signature (JWS) 在处理问题时有着长期的记录,这些问题导致了安全问题。这个库不会是JWE/JWT/JWS的完整实现,而是关注于一个可以更紧密地在有限用例中安全性和正确性审计的最小子集。

何时应该使用这个库?

如果你是

  • 创建ECDSA签名JWT令牌,或验证ECDSA签名JWT令牌
  • 作为信誉方或授权服务器实现OIDC
  • 想要使用HMAC签名来透明地处理JSON数据
  • 需要一个最小的安全JWS实现
  • 使用TPM绑定密钥签名JWT
  • 创建使用AES-128-GCM保护的加密令牌
  • 接收或向ECDSA密钥发送加密数据

那么这个库适合你

如果你需要非紧凑型JWS或其他复杂用例,这个库不适合你。

为什么还需要另一个JWT库?

crates.io上已经有了许多JWT库,但是它们每个都有局限性或设计,这与Kanidm的项目目标相冲突。例如

  • 不正确的实现 - 有几个Rust JWT库与RFC不一致,或者没有RFC向量测试
  • 以Ring作为唯一的加密提供商 - 我们需要使用OpenSSL
  • 只支持RSA/弱加密算法 - 我们希望使用ECDSA
  • 完整的JWS实现 - 如前所述,JWS有几个尖锐的边缘,如alg=none
  • 没有库支持pkcs11或TPMS - 我们的目标是允许硬件安全模块存储私钥

因此,没有“合适”的东西,所以我们正在制作另一个库。

依赖关系

~4–6MB
~143K SLoC