🔐 WebAuthn 和 Passkeys 精选
WebAuthn 和 Passkeys 相关工具和项目的精选列表
WebAuthn 是一个 W3C 标准,允许用户使用他们喜欢的设备向网站进行身份验证。WebAuthn 得到了大多数浏览器和平台的支持,可以与 FIDO2、CTAP、U2F 和其他设备一起使用。
Passkey 是一个总称,基本上指的是 FIDO。
欢迎贡献。通过拉取请求添加链接或创建议题以开始讨论。在贡献之前,请阅读贡献指南。
目录
演示
- DUO: WebAuthn 演示 - WebAuthn 规范的演示 https://webauthn.io/。
- Anders Åberg: .NET FIDO2 库演示 - 使用 .NET 的 FIDO2 和 WebAuthn 可用实现库 + 演示 https://fido2-net-lib.passwordless.dev/。
- Auth0: WebAuthn 演示 - 可能是最好的 WebAuthn 流程演示。
- Google: WebAuthn 演示 - WebAuthn 规范的 Java 依赖方实现示例 https://webauthndemo.appspot.com。
- Yubico: WebAuthn 演示 - 提供 WebAuthn 数据流的技术细节,包括一个测试 U2F/FIDO2 密钥作为第二因素或无密码密钥的游乐场。
- jcjones: WebAuthn.bin.coffee 演示 - 用于测试 Web 身份验证的简单网站 https://webauthn.bin.coffee/。
- FIDO 联盟: 互操作 Web 应用 - FIDO2 服务器的简单测试应用。
- Spomky-Labs: Webauthn 演示 - 基于 Symfony 和 PHP 框架 web-auth/webauthn-framework 的演示。
- Yuriy Ackermann: FIDO2 演示 - "WebAuthn API 简介" 的一系列演示。
- Shane Weeden: FIDO2 查看器 - 这是一个免费、简单、独立在浏览器中运行的 FIDO2 认证和断言负载检查查看器。
- Xavier Renard: Webauthn 演示 - 基于 Java Spring Boot 和 React.js 的可用 WebAuthn 演示。
- Anders Rundgren: FIDO Web Pay - 公共基于 FIDO 的"钱包"演示和相关标准提案。
- MasterKale: SimpleWebAuthn 演示 - SimpleWebAuthn 示例项目 的可用实例,展示了其服务器和浏览器库。
- MasterKale: WebAuthn 调试器 - WebAuthn 注册和认证响应预览器。
- WebAuthn 查看器 - 基于 GUI 的 WebAuthn API 响应查看器。
- Chris Keogh: dotnetcore IdentityServer4 演示 - 使用 dotnetcore 和 FIDO2.NET 库的 WebAuthN 演示,将无密码身份验证与 IdentityServer4 集成。
- Firstyear: Webauthn RS 演示和兼容性测试器 - 使用 Webauthn-RS 的 Webauthn 演示,带有 WASM 浏览器组件和详尽的设备兼容性和压力测试器。
- webauthn-skeleton: Node.js/Koa 应用 - 这是一个具有无密码登录功能(Web 身份验证 API、WebAuthN、FIDO2)的 Node.js/Koa 应用程序的工作骨架。
- Dashlane: Android passkey 示例应用 - 一个演示原生 passkey 支持的 Android 示例应用程序。
- Passwordless.ID WebAuthn 库游乐场 - 使用这个交互式游乐场注册、认证和验证 WebAuthn 凭证。
- WebAuthn.Net 演示 - 使用 WebAuthn.Net 和 ASP.NET Core 8 的使用场景演示。
服务器库
FIDO 认证™
LINE: FIDO2 服务器 - 经 FIDO 联盟官方认证的 FIDO2(WebAuthn) 服务器和依赖方示例。FIDO 认证™
Hanko: 通行密钥服务器 - 用 Go 编写的 FIDO2 认证通行密钥和 WebAuthn 服务器。包含 JavaScript 客户端 SDK 和 Auth.js (Next-Auth) 的通行密钥提供程序。FIDO 合规
Anders Åberg: .NET FIDO2 库 - 使用 .NET 的 FIDO2 和 WebAuthn 实现库和演示。FIDO 合规
WebAuthn.Net - 适用于 .NET 6 和 .NET 8 的 WebAuthn 生产就绪、易用、可扩展实现及演示。FIDO 合规
WebAuthn4J 项目: WebAuthn4J - WebAuthn 服务器端验证的可移植 Java 库。FIDO 合规
WebAuthn Go 库 - 用 Go 编写的 WebAuthn 库(替代已存档和弃用的 DUO: WebAuthn Go 库)。FIDO 合规
cedarcode: WebAuthn Ruby - WebAuthn 依赖方的 Ruby 实现。FIDO 合规
MasterKale: @simplewebauthn/server - 简化的 WebAuthn。TypeScript 优先的 Node.js 库,用于简化 WebAuthn 集成。支持在 TypeScript 和 JavaScript 项目中使用。前端库 @simplewebauthn/browser 的配套库(见客户端库)。FIDO 合规
Eclipse Vert.x: WebAuthn - Eclipse Vert.x 的响应式 WebAuthn 库。适用于任何 Vert.x 相关框架:Vert.x Web、Quarkus、ES4X 等。FIDO 合规
Madwizard.org: WebAuthn PHP 库 - PHP 的 WebAuthn 服务器库。FIDO 合规
Spomky-Labs: WebAuthn 框架 - 此框架包含 PHP 库和 Symfony 包,允许开发人员将 FIDO2 认证机制集成到其 Web 应用程序中。- Duo: py_webauthn - Python 风格的 WebAuthn。专注于简化 WebAuthn 功能使用的 Python3 WebAuthn API 实现。
- Yubico: Java WebAuthn 服务器 - Java 的服务器端 Web 认证库。
- webauthn-open-source: FIDO2 库 - 用于执行 FIDO 2.0 / WebAuthn 服务器功能的 Node.js 库。
- Nov Matake: Ruby WebAuthn 库 - Ruby 中的 W3C Web 认证 API(又名 WebAuthn / FIDO2)RP 库。
- Yubico: python-fido2 - FIDO2 客户端和服务器库。
- Tangui: Wax - WebAuthn 的 Elixir 实现。
- Suby Raman: redux-webauthn - 用于使用 Web 认证 API(FIDO2)注册和认证用户的 Redux 中间件。
- Firstyear: WebAuthn-RS - Rust Web 服务器的通行密钥和 Webauthn 组件实现。
- Koesie10: WebAuthn - 用于轻松服务器/客户端集成的 Go/JS WebAuthn 库。
- SharpLab: Spring-Security-WebAuthn - Spring Security 项目的非官方 WebAuthn 模块。
- Wallix: @webauthn/server - 包含易用助手以集成 FIDO2 的 Node.js 库。与 @webauthn/client 配对使用。
- asbiin: laravel-webauthn - WebAuthn 框架(来自 Spomky-Labs)的 Laravel 适配器。
- e3b0c442: warp - Go 的框架无关依赖方实现。
- fumieval: webauthn - 初步的 Haskell 实现。
- lbuchs: PHP Webauthn - 简单的 PHP WebAuthn(FIDO2)服务器库。
- Robur: webauthn - 用 OCaml 编写的 IO 无关 WebAuthn 服务器实现。
- Passwordless.ID: WebAuthn 库 - 简单、最小、有主见的 WebAuthn TypeScript 封装。包含客户端调用 WebAuthn 和服务器端验证凭证的功能。
- swift-server: webauthn-swift - 在服务器上实现 WebAuthn 规范的 Swift 库。
客户端库
- Yubico: python-fido2 - 通过 USB HID 与硬件认证器通信的客户端库。
- Yubico: libfido2 - C语言客户端库和命令行工具,用于通过USB与FIDO设备通信,并验证认证和断言签名。
- keys.pub: go-libfido2 - Go语言客户端库(封装了Yubico: libfido2)。
- Lyo Kato: iOS Webauthn Kit - 该库提供了一种简单处理W3C Web认证API(又称WebAuthN / FIDO 2.0)的方法。
- Yubico: 移动Android SDK (YubiKit) - YubiKit是由Yubico提供的Android库,用于与Android设备上的YubiKeys交互。同样适用于其他FIDO2设备。
- Yubico: 移动iOS SDK (YubiKit) - YubiKit是由Yubico提供的iOS库,用于与iOS设备上的YubiKeys交互。同样适用于其他FIDO2设备。
- Mozilla: authenticator-rs - 用于与安全密钥交互的Rust库,由Firefox使用。
- Firstyear: webauthn-authenticator-rs - 用于与安全密钥交互的Rust库,基于authenticator-rs,但扩展支持CTAP2.1和NFC。
- COTECH: 硬件安全SDK - Android库,用于通过NFC和USB与FIDO2和U2F安全密钥交互。还提供WebAuthn-WebView桥接。
- MasterKale: @simplewebauthn/browser - 简化的WebAuthn。一个TypeScript优先的浏览器库,用于更简单的WebAuthn集成。支持在TypeScript和JavaScript项目中使用。与后端**@simplewebauthn/server**配套(参见服务器库)。也可与Duo的py_webauthn配合使用。
- Corbado: flutter-passkeys - Flutter包,为iOS和Android应用提供密钥认证。
- WIOSense: rauth-android - 用于FIDO2漫游认证器的Android库。
软件认证器
- Damian Czaja: android-webauthn-token - 一个基于FIDO2 WebAuthn BLE的Android手机令牌。
- Fabian Henneke: WearAuthn - 支持常驻密钥的Wear OS手表FIDO2蓝牙HID/NFC软令牌。
- Radoslav Bodó: soft-webauthn - Python软件WebAuthn令牌。
- adessoSE: softauthn - 用Java编写的FIDO2认证器模拟器/软件令牌。
- Daniel Stiner: Rust U2F - 用Rust编写的U2F安全令牌模拟器。
- Firstyear: webauthn-authenticator-rs - 包含一个带有临时证明CA的软件WebAuthn令牌,允许对设备策略进行更丰富的测试。
- tjado mäcke: Authorizer - 基于psafe3文件的Android密码管理器,支持通过蓝牙进行FIDO2 WebAuthn认证。
- bulwarkid: virtual-fido - virtual-fido是一个基于Golang的命令行应用程序,可模拟USB安全令牌。它也可以作为库使用。
- bulwarkid: bulwark-passkeys - Bulwark passkeys是一个用Golang编写的桌面应用程序,支持CTAP2,类似于基于平台的认证器。
硬件认证器
FIDO认证™
SoloKeys - Solo是一个开源FIDO2安全密钥,您可以在https://solokeys.com购买。FIDO合规
Conor Patrick: U2F Zero - U2F Zero是一个用于双因素认证的开源U2F令牌。- Trezor - Trezor是一个具有FIDO/U2F和FIDO2/WebAuthn功能的开源硬件钱包。
- Google: OpenSK - OpenSK是用Rust编写的开源安全密钥实现,支持FIDO U2F和FIDO2标准。
- Nitrokey - Nitrokey正在开发/生产不同类型的开源和开放硬件FIDO2安全密钥(查看"Nitrokey FIDO2"和"Nitrokey 3"相关存储库)。
- BryanJacobs: FIDO2Applet - FIDO2 CTAP2 Javacard小程序。
- darconeous: u2f-javacard - 基于ledger-u2f-javacard的注重隐私的Java Card U2F认证器(Ledger的更新分支)。
开发工具
- Shane B Weeden: FIDO2 Postman Clients - FIDO2 Postman客户端,可轻松测试您的FIDO2 API端点。
- MasterKale: WebAuthn Previewer - 用于预览WebAuthn证明和断言的简单网站。
- Firstyear: Webauthn RS兼容性测试器 - WebAuthn设备和浏览器压力测试器,可识别实现中的缺陷,并已发现Firefox、Safari、Android等的漏洞。
- Descope: VirtualWebAuthn测试工具 - 一个GO包,用于自动测试依赖方WebAuthn服务器实现,无需浏览器或实际认证器。
- Olivier Potonniée: FIDO MDS Explorer - 一个用户友好的Web界面,用于浏览FIDO元数据服务存储库,其中包含向FIDO联盟注册的认证器的详细特征和证明证书。
- WebAuthn Playground - 一个用于测试WebAuthn操作的网页(无服务器),可配置参数并查看/解析响应。
- Passkeys调试器 - 一个简单的网站,用于测试不同的密钥/WebAuthn服务器设置和客户端响应。
规范
- FIDO最新规范 - 查找最新和原始FIDO规范的正确位置。
- CTAP 2.1规范 - 客户端到认证器协议v2.1
- WebAuthn草案 - WebAuthn草案
- CBOR规范 - CBOR规范页面,包含最新更新和各种编程语言使用CBOR的库。
教程
- WebAuthn API 入门 - 深入探讨 WebAuthn API 及其使用方法的详细文章。
- Passkeys.dev - 一个关于密钥使用入门的优秀指南。
- WebAuthn 指南:DUOSEC - Suby Raman 编写的出色 WebAuthn 初学者指南。
- Yubico 实验室:WebAuthn 入门套件参考部署 - 介绍如何通过标识符优先流程帮助用户迁移至无密码认证。整合了 Yubico 的 java-webauthn-server 与 AWS Lambda 和 AWS Cognito。包含 Web 和 iOS 客户端示例。参见参考架构。
- Yubico 实验室:使用无密码认证保护网站安全 - Yubico Java 可发现凭证工作坊。
- Google:你的第一个 WebAuthn - Google 的 Eiji Kitamura 编写的精彩 WebAuthn 入门教程。
- FIDO 联盟:如何使用 FIDO - 关于 FIDO 良好用户界面/用户体验的权威指南。
文章
- Yuriy Ackermann:WebAuthn/FIDO2 博客 - 适合那些希望深入了解 WebAuthn 的人阅读的优秀博客。
- Auth0:Web 认证简介 - Auth0 团队撰写的出色 WebAuthn 入门文章。
- Watahani 的博客 - 日语:技术笔记和烹饪话题等。
- Eiji Kitamura:凭证管理 API 和最佳实践 - 可能是最好的凭证管理 API 指南。
- Ken¥d 的博客 - 日语:总结安全、Android 和云原生相关内容的博客。
- gebo:CTAP2 学习笔记博客 - 认证、授权、FIDO、CTAP、NFC、BLE、C、C++、C#、Rust、猫咪的呕吐。
- 上野博司/super_reader:Yahoo! JAPAN 的生物认证实践(FIDO2 服务器机制介绍) - 关于 Yahoo! JAPAN FIDO2 服务器机制的博客。
- 无密码认证 WebAuthn 的要点和支持情况 - WebAuthn API 和基本 FIDO 概念概述。
- 如何实现无需密码的世界 - 了解 FIDO2 和 WebAuthn 的基础 - 北村先生讲述创建无密码世界的方法。
- Damien Bod:ASP.NET CORE IDENTITY 与 FIDO2 WEBAUTHN MFA - 本文展示了如何将 Fido2 WebAuthn 用作双因素认证并集成到 ASP.NET Core Identity 应用程序中。
- Paul Stamatiou:安全密钥入门 - 如何使用 FIDO2、WebAuthn 和安全密钥在线保持安全并防止网络钓鱼。(技术性较低但非常有用的文章)
- Adam Powers FIDO 联盟:关于证明的真相 - 一篇关于证明的精彩技术文章。
- Henrik Loeser (data-henrik):FIDO2 相关博客文章 - Linux 和云服务上的 FIDO2 密钥。
- Tim Brust:多因素认证与 Web 认证 API 的安全性评估比较 - 一篇比较 WebAuthn 与其他多因素认证方法(如 HOTP、TOTP 或 U2F)的硕士论文。
- Stavros Korokithakis:如何在 SSH 中使用 FIDO2 USB 认证器 - 关于如何使用 FIDO2 验证 SSH 会话的优秀教程。尽可能简短,但又包含了理解所有重要主题(如常驻密钥与非常驻密钥)所需的详细信息。
- webauthn.wft - 一个很好的概述,附有许多详细链接,可供感兴趣的人深入了解。
- 成为 Microsoft 兼容的安全密钥供应商 - 一份官方指南,介绍如何使您的安全密钥与 Microsoft Entra 兼容。
幻灯片
- Yuriy Ackermann:WebAuthn 概述 - 2019 年演讲中的 WebAuthn 介绍幻灯片。
- 在 Android 端使用 com.google.android.gms.fido.fido2 实现 FIDO - 适合那些想要为 Android 应用添加密钥支持的人的优秀指南。
- WebAuthn Works:幻灯片 - Yuriy Ackermann 和 WebAuthn Works 制作的英语和俄语幻灯片库。
书籍
- WebAuthn入门 - 在Comic Market 95发售的同人志《Getting started with WebAuthn》的电子版(PDF)。
- Web和移动应用的密码认证 - 由Dmitry Chestnykh @dchest撰写的关于Web和移动应用认证的书籍。深入讨论了正确的密码认证,并额外介绍了FIDO2/WebAuthn。
其他
- webauthn-open-source: WebAuthn徽标 - Adam Powers设计的精美WebAuthn徽标。
- CTAP2.1迁移指南 - 为拥有CTAP2.0认证器并希望迁移到CTAP2.1的用户提供的指南。
- 密钥/WebAuthn速查表 - 一个双面PDF,解释了实现密钥所需的所有相关对象、概念和资源。
- WebAuthn维基 - WebAuthn API规范的官方解释和维基。
- 密钥状态 - 显示操作系统和浏览器当前密钥就绪状态的信息页面。
常见问题
什么是FIDO认证™
?
FIDO认证
意味着实现已通过FIDO一致性工具测试,通过了互操作性测试,并获得了FIDO联盟的官方认证。这是FIDO联盟的注册商标。
什么是FIDO合规
?
FIDO合规
意味着实现已通过FIDO一致性工具测试(由作者报告),因此可以声称符合FIDO2规范。如果你想获取一致性工具,可以在这里访问:https://fidoalliance.org/certification/functional-certification/conformance/。如果你已通过一致性工具测试,请向[@herrjemand](https://twitter.com)发送私信或推文,附上通过测试的截图。
FIDO2还是WebAuthn?
FIDO2是标准的名称。WebAuthn只是与认证器通信的浏览器JS API。因此,正确的说法是将你的服务器称为"FIDO2服务器",并说"使用FIDO2进行认证"。
我想在这里宣传我公司的产品!
请不要这样做。通过撰写一篇深入、技术性强的好文章,或开源你的服务器和/或工具,比廉价的炫耀能为你带来更好的宣传效果。如果你向人们展示你知道自己在做什么,他们就会购买你公司的产品。
否则,我们有严格的无广告政策。我们只会链接到开源仓库和实际文章,不会链接到公司网站。