概览
使用已同步的通行密钥时,用户会通过通行密钥提供方进行身份验证。
若要创建通行密钥并使用通行密钥进行身份验证,您需要针对网页使用 WebAuthn API,或针对 Android 应用使用 Credential Manager API。这些 API 可处理客户端与通行密钥提供程序之间的通信。
虽然这些 API 是从网页或 Android 应用等客户端调用的,但您需要在服务器上实现其余功能才能完成身份验证用例。
通行密钥实现包含两个功能:
- 通行密钥注册。使用 WebAuthn API 或 Credential Manager API 让用户创建通行密钥。将关联的公钥存储在服务器上。
- 使用通行密钥进行身份验证。从服务器获取身份验证质询,并使用 WebAuthn API 或 Credential Manager API 让用户使用其通行密钥对此质询进行签名。在服务器上验证签名。如果签名有效,请对用户进行身份验证。
服务器端库
虽然您可以从头开始实现服务器端通行密钥功能,但我们建议您改用库。
支持通行密钥创建和身份验证的服务器称为 FIDO2 服务器(简称 FIDO 服务器)。概括而言,我们将在这里将实现通行密钥支持的服务器端库称为 FIDO 服务器端库。
为什么要使用库?
使用 FIDO 服务器端库具有多项优势:
- 时间和开发者体验。WebAuthn 规范非常复杂。FIDO 服务器端库可提供简单的 API 来实现通行密钥,从而节省时间和开发资源。
- 可维护性。WebAuthn 规范仍可能会发生变化。使用积极维护的库的最新版本有助于让您的实现保持最新状态。
- 安全与合规性。您希望通行密钥实现符合 WebAuthn 规范及其安全要求。FIDO 服务器端库可帮助您确保实现的安全性并符合相关规范。根据您的产品和行业,您的实现可能还需要遵守法规,要求您使用特定的安全标准进行身份验证。
如果可能,考虑为您的产品所依赖的开源项目提供资金支持。
库
- awesome-webauthn GitHub 代码库包含社区精选的服务器端库列表。您会发现适用于 JavaScript、TypeScript、Go、Python 等的库。
- passkeys.dev 上提供了一系列库。该库由 W3C WebAuthn 采用社区群组维护。
- FIDO 联盟引用了 FIDO2 服务器集合。