从FIDO2到无缝登录:hanko如何重塑Passkey认证标准

从FIDO2到无缝登录:hanko如何重塑Passkey认证标准

【免费下载链接】hanko Auth and user management for the passkey era 【免费下载链接】hanko 项目地址: https://gitcode.com/GitHub_Trending/ha/hanko

你是否还在为用户频繁忘记密码而烦恼?是否担忧传统密码认证带来的安全风险?hanko项目为这些问题提供了革命性解决方案。通过深度整合FIDO2/WebAuthn标准,hanko不仅实现了无密码认证的技术突破,更构建了一套完整的身份验证生态系统。本文将详细解析hanko如何推动Passkey认证标准化,以及其在实际应用中的创新实践。读完本文,你将了解:

  • hanko对FIDO2/WebAuthn标准的技术实现
  • Passkey认证的完整工作流程
  • 多场景下的配置与集成方案
  • 未来身份验证的发展趋势

hanko与FIDO2/WebAuthn标准

FIDO2(Fast IDentity Online 2)是由FIDO联盟制定的无密码认证标准,而WebAuthn(Web Authentication)是其核心组件,定义了基于公钥加密的网页认证API。hanko作为"Passkey时代的身份验证与用户管理"解决方案,深度实现并扩展了这些标准。

hanko的核心架构包括backendfrontend/elements两大模块。后端使用Go语言构建,提供完整的认证API;前端则通过Web Components实现跨框架的UI组件。这种分离架构既保证了认证逻辑的安全性,又简化了开发者的集成流程。

在后端实现中,backend/handler/webauthn.go是WebAuthn协议处理的核心。该文件实现了从认证初始化到凭证验证的完整流程,包括注册、认证、凭证管理等关键功能。例如,BeginRegistration函数处理WebAuthn注册请求,生成符合FIDO2标准的注册选项:

options, sessionData, err := h.webauthn.BeginRegistration(
    webauthnUser,
    webauthn.WithAuthenticatorSelection(protocol.AuthenticatorSelection{
        RequireResidentKey: &t,
        ResidentKey:        protocol.ResidentKeyRequirementRequired,
        UserVerification:   protocol.UserVerificationRequirement(h.cfg.Passkey.UserVerification),
    }),
    webauthn.WithConveyancePreference(protocol.ConveyancePreference(h.cfg.Passkey.AttestationPreference)),
)

这段代码展示了hanko如何根据配置生成符合FIDO2标准的注册选项,包括居民密钥要求、用户验证级别等关键参数。

Passkey认证工作流程

hanko实现的Passkey认证流程严格遵循FIDO2/WebAuthn标准,同时针对实际应用场景进行了优化。完整流程包括四个主要阶段:初始化、凭证创建/获取、验证和会话管理。

注册流程

  1. 请求注册选项:客户端调用BeginRegistration API获取注册参数
  2. 创建凭证:用户设备生成公私钥对,创建Passkey
  3. 验证与存储:服务器验证凭证有效性并安全存储

关键实现位于backend/handler/webauthn.go的BeginRegistration和FinishRegistration函数。在注册过程中,hanko支持多种配置选项,如用户验证级别、认证器选择策略等,这些配置可通过backend/config/config_passkey.go进行调整:

type Passkey struct {
    // `user_verification` specifies the requirements regarding local authorization
    UserVerification string `yaml:"user_verification" json:"user_verification,omitempty" koanf:"user_verification" split_words:"true" jsonschema:"default=preferred,enum=required,enum=preferred,enum=discouraged"`
    // `attestation_preference` is used to specify the preference regarding attestation conveyance
    AttestationPreference string `yaml:"attestation_preference" json:"attestation_preference,omitempty" koanf:"attestation_preference" split_words:"true" jsonschema:"default=direct,enum=direct,enum=indirect,enum=none"`
    // 其他配置...
}

认证流程

认证流程与注册类似,但重点在于验证用户持有的凭证:

  1. 请求认证选项:客户端调用BeginAuthentication API获取挑战
  2. 用户验证:用户通过生物识别或PIN码验证身份
  3. 验证断言:服务器验证签名断言,确认用户身份

backend/handler/webauthn.go中的BeginAuthentication和FinishAuthentication函数实现了这一流程。值得注意的是,hanko支持两种认证模式:基于用户ID的非发现式认证和基于用户句柄的发现式认证,满足不同场景需求。

配置与定制化

hanko提供了丰富的配置选项,允许开发者根据自身需求定制Passkey认证行为。这些配置主要集中在backend/config/目录下的相关文件中。

核心配置项

backend/config/config_passkey.go定义了Passkey相关的核心配置:

  • UserVerification:用户验证级别,可选值为"required"、"preferred"或"discouraged"
  • AttestationPreference:证明传递偏好,影响认证器证明的获取方式
  • AcquireOnRegistration:注册时是否提示创建Passkey
  • Limit:用户可创建的Passkey数量上限

backend/config/config_webauthn.go则定义了WebAuthn协议的基础配置:

type WebauthnSettings struct {
    RelyingParty RelyingParty `yaml:"relying_party" json:"relying_party,omitempty" koanf:"relying_party" split_words:"true" jsonschema:"title=relying_party"`
    Timeouts WebauthnTimeouts `yaml:"timeouts" json:"timeouts,omitempty" koanf:"timeouts" split_words:"true" jsonschema:"title=timeouts"`
}

type RelyingParty struct {
    DisplayName string `yaml:"display_name" json:"display_name,omitempty" koanf:"display_name" split_words:"true" jsonschema:"default=Hanko Authentication Service"`
    Id string `yaml:"id" json:"id,omitempty" koanf:"id" jsonschema:"default=localhost,examples=localhost,example.com,subdomain.example.com"`
    Origins []string `yaml:"origins" json:"origins,omitempty" koanf:"origins" jsonschema:"minItems=1,default=http://localhost:8888"`
}

这些配置允许开发者自定义依赖方信息、超时设置等关键参数,以适应不同的应用场景。

多语言支持

hanko前端组件提供了完善的国际化支持,包括对Passkey相关术语的多语言翻译。在frontend/elements/src/i18n/en.ts中,我们可以看到Passkey相关的文本定义:

{
    passkey: "Passkey",
    signInPasskey: "Sign in with a passkey",
    registerAuthenticator: "Create a passkey",
    webauthnUnsupported: "Passkeys are not supported by your browser",
    // 更多翻译...
}

目前支持英语、法语、德语、意大利语等多种语言,便于全球用户使用。

实际应用与集成

hanko提供了多种集成方式,满足不同开发者和应用场景的需求。无论是快速原型开发还是生产环境部署,都能找到合适的方案。

快速启动

对于想要快速体验hanko的开发者,项目提供了quickstart目录,包含完整的示例应用。通过Docker Compose可以一键启动包含前后端的完整环境:

git clone https://gitcode.com/GitHub_Trending/ha/hanko
cd GitHub_Trending/ha/hanko
docker-compose -f deploy/docker-compose/quickstart.yaml up

这将启动后端API、前端示例和数据库服务,完整展示hanko的各项功能。

前端集成

hanko的前端组件frontend/elements提供了现成的Web Components,可轻松集成到任何前端框架中。例如,在HTML中直接使用<hanko-auth>组件即可添加完整的认证界面:

<!DOCTYPE html>
<html>
<head>
    <script src="https://cdn.jsdelivr.net/npm/@teamhanko/hanko-elements@latest/dist/elements.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@teamhanko/hanko-elements@latest/dist/elements.css">
</head>
<body>
    <hanko-auth api="https://your-hanko-api.com"></hanko-auth>
</body>
</html>

这种零依赖的集成方式极大降低了开发者的使用门槛。同时,组件支持丰富的自定义选项,包括样式定制、事件处理等,详情可参考frontend/elements/README.md

后端配置

在生产环境中,管理员可以通过配置文件精细调整hanko的行为。deploy/docker-compose/config.yaml是Docker部署的默认配置文件,包含了Passkey认证的关键设置:

webauthn:
  relying_party:
    id: example.com
    display_name: Example Service
    origins:
      - https://example.com
passkey:
  user_verification: preferred
  attestation_preference: none
  acquire_on_registration: always
  acquire_on_login: conditional

这些配置控制着Passkey的注册策略、用户验证要求等关键行为,管理员可根据安全需求进行调整。

未来展望

hanko项目仍在持续发展中,未来将进一步完善Passkey生态。根据项目README.md中的路线图,即将推出的功能包括:

  • 组织、角色和权限管理
  • <hanko-menu> Web组件
  • 移动端SDK(iOS、Android、React Native、Flutter)

这些功能将进一步扩展hanko的应用场景,使其不仅适用于个人应用,也能满足企业级需求。

随着Passkey技术的普及,我们可以预见一个无密码的未来。hanko通过其对FIDO2/WebAuthn标准的深入实现和创新扩展,正在为这一未来铺平道路。无论是用户体验还是安全性,Passkey都显著优于传统密码,而hanko则让这种先进技术的应用变得简单可行。

总结

hanko项目通过深度整合FIDO2/WebAuthn标准,为开发者提供了一套完整的Passkey认证解决方案。其核心优势包括:

  1. 标准合规:严格遵循FIDO2/WebAuthn标准,确保跨平台兼容性和安全性
  2. 易于集成:提供现成的Web组件和API,简化开发流程
  3. 灵活配置:丰富的配置选项适应不同场景需求
  4. 安全可靠:完整的审计日志和安全最佳实践

无论是初创公司还是大型企业,都可以通过hanko快速实现安全、友好的无密码认证系统。随着Passkey技术的普及,hanko有望成为身份验证领域的重要基础设施。

如果你对hanko项目感兴趣,欢迎通过以下方式参与:

让我们共同迈向无密码的未来!

【免费下载链接】hanko Auth and user management for the passkey era 【免费下载链接】hanko 项目地址: https://gitcode.com/GitHub_Trending/ha/hanko

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值