1个不稳定版本

0.5.0-20230418 2023年10月31日

#24#目录

MPL-2.0 许可证

57KB
1K SLoC

Webauthn-rs

Webauthn是一种基于硬件的认证的现代方法,包括一个用户、一个认证器设备、一个与设备交互的浏览器或客户端,以及一个能够生成挑战并验证认证器有效性的服务器。

用户可以通过注册过程将令牌注册到自己的账户,然后可以使用作为加密认证执行的令牌进行登录。

这个库旨在提供有用的函数和框架,允许您将webauthn集成到Rust网络服务器中。这意味着库实现了Webauthn/FIDO2工作流程中的受信任方组件。我们提供了模板和示例javascript和wasm绑定,以演示浏览器交互。

行为准则

查看我们的 行为准则

区块链支持策略

本项目不支持任何与区块链相关的用例。我们不会接受来自以区块链、加密货币、NFT或所谓的“Web 3.0技术”为主要业务的组织(或其员工)的问题。此声明不影响根据项目开源许可证授予的权利和义务。

如果您对声明的范围以及它是否影响您有进一步的问题,请发送电子邮件至webauthn at firstyear.id.au

文档

此库由多个主要部分组成。

一个安全、以用例驱动的API,定义在 Webauthn-RS

低级别、协议级别的交互,定义在 Webauthn-Core-RS

协议绑定,定义在 Webauthn-RS-proto

FIDO MDS (认证器透明度) 解析器 FIDO-MDS

我们强烈建议您使用安全的API,因为Webauthn有很多锋利的边缘和错误使用的方法!

演示

您可以通过我们的 演示网站 测试此库

或者您可以在本地使用以下命令运行演示

cd compat_tester/webauthn-rs-demo
cargo run

对于演示网站的附加配置选项

cargo run -- --help

已知支持的密钥/硬件

我们对各种密钥和设备进行了广泛的测试,不仅限于

  • Yubico 5c / 5ci / FIPS / Bio
  • TouchID / FaceID (iPhone, iPad, MacBook Pro)
  • Android
  • Windows Hello (TPM)
  • 软令牌

如果您的密钥/浏览器组合无法正常工作(通常是由于缺少加密例程),请进行兼容性测试,然后提交一个问题,以便我们能够解决这个问题!

已知的损坏密钥/硬件

  • Pixel 3a / Pixel 4 + Chrome - 不发送正确的声明证书,并忽略请求的算法。尚未解决。
  • Windows Hello 与较旧 TPM - 通常使用 RSA-SHA1 签名进行声明,这可能会允许凭证泄露/伪造。

标准合规性

这个库被精心实现,以遵循 w3c 标准 webauthn 3+ 处理,以确保安全和正确的行为。我们支持大多数主要扩展和密钥类型,但我们不声称是标准兼容的,因为

  • 我们在库中强制执行了超出标准提供的安全保证的额外约束。
  • 我们不支持某些偏门选项。
  • 我们不支持所有加密原语类型(仅限于安全的类型)。
  • webauthn 中宣传的许多功能在现实世界中不起作用。

此库已通过 SUSE 产品安全进行的审核。欢迎进行其他安全审查!

依赖项

~2.9–4MB
~87K SLoC