WebAuthn

2025-12-07 0 281

WebAuthn

一个简单的PHP WebAuthn (FIDO2)服务器库

该项目的目标是提供一个小型,轻巧,易于理解的库,以使用Passkeys,Yubico或Solo等安全键,Android或Windows Hello上的指纹保护登录。

手动的

有关此库的简单用法,请参见 /_ Test。查看WebAuthn .lubu.ch的工作示例

支持的证明语句格式

  • Android-key✅
  • Android-Safetynet✅
  • 苹果✅
  • fido-u2f✅
  • 包装✅
  • TPM✅

笔记

该库支持具有X.509证书或自我证明的身份验证者。不支持ECDAA。

工作流程

         JAVASCRIPT            |          SERVER
------------------------------------------------------------
                         REGISTRATION


   window.fetch  ----------------->     getCreateArgs
                                             |
navigator.credentials.create   <-------------\'
        |
        \'------------------------->     processCreate
                                             |
      alert ok or fail      <----------------\'


------------------------------------------------------------
                      VALIDATION


   window.fetch ------------------>      getGetArgs
                                             |
navigator.credentials.get   <----------------\'
        |
        \'------------------------->      processGet
                                             |
      alert ok or fail      <----------------\'

证明

通常,当某人登录时,您只需要确认他们使用的是在注册过程中使用的设备。在这种情况下,您不需要任何形式的证明。但是,如果您需要额外的安全性,例如当您的公司要求使用Solokey登录时,则可以通过直接证明验证其真实性。公司还可以购买具有自己的根证书签名的身份验证者,从而使他们能够验证身份验证者隶属于组织。

没有证明

只需验证该设备与注册中使用的设备相同。如果您仅检查“无”格式,则可以对此库使用“无”证明。

提示

如果您想为公共网站安全登录,这就是您想要使用的。

间接证明

浏览器可以用更友好的隐私友好和/或更容易验证的相同数据的版本(例如,使用匿名化CA)替换Aaguid和Agauid和证明语句。如果浏览器使用匿名证书,则无法对任何根CA进行验证。如果您选择多种格式,但没有提供任何root ca。

提示

混合灵魂,客户可能会因浏览器警告而灰心,但随后您知道他们正在使用的设备(Statistics Rulez!)

直接证明

浏览器提供了有关标识设备的数据,可以唯一地识别该设备。可以在多个站点上跟踪用户,因为浏览器可能会在注册时显示有关提供此数据的警告消息。如果您选择多种格式并提供root ca,则该库将证明设置为指导。

提示

如果您知道客户正在使用哪些设备并确保仅使用此设备,则可能是您想要的。

Passkeys /客户端可发现的凭据

客户端可发现的凭据源是公共密钥凭证源,其凭证私钥存储在身份验证器,客户端或客户端设备中。这样的客户端存储需要一个居民凭证的身份验证器。这仅由FIDO2硬件支持,而不是较旧的U2F硬件。

笔记

Passkeys是一种允许与其他设备共享存储在设备上的凭据。因此,从服务器的技术角度来看,客户端可发现的凭据没有区别。区别仅仅是手机或计算机系统会通过云服务自动同步用户设备之间的凭据。 PassKeys的跨设备同步由OS透明地管理。

它如何工作?

在典型的服务器端密钥管理过程中,用户通过输入其用户名以及某些情况下的密码来启动请求。服务器验证用户的凭据,并在成功身份验证后检索与该用户帐户关联的所有公共密钥标识符的列表。然后将此列表返回给身份验证者,该列表选择其发行的第一个凭据标识符,并以签名响应,可以使用注册过程中注册的公共密钥进行验证。

在客户端密钥过程中,用户无需提供用户名或密码。取而代之的是,身份验证器搜索自己的内存,以查看它是否为依赖方(域)保存了一个密钥。如果找到键,则身份验证过程以与服务器发送标识符列表相同的方式进行。验证过程没有差异。

如何将其与此库一起使用?

注册

调用WebAuthn \\ WebAuthn ->getCreateArgs时,将$requireResidentKey设置为true,以通知身份验证者,他应该将注册保存在其内存中。

登录

调用WebAuthn \\ WebAuthn ->getGetArgs时,请勿提供任何$credentialIds (身份验证者将在其内存中查找ID并将用户ID返回用户handle)。将身份验证器的类型设置为hybrid (通过QR代码扫描的PassKey)和internal (存储在设备本身上的Passkey)。

劣势

RP ID(=域)保存在身份验证器上。因此,如果丢失了身份验证者,则可以在理论上找到使用身份验证器并在此处登录的服务。

设备支持

可用的内置Passkeys自动同步到所有用户的设备:(另请参见Passkeys.dev/device-support)

  • 苹果iOS 16+ / iPados 16+ / macos ventura+
  • Android 9+
  • Microsoft Windows 11 23H2+

要求

  • php> = 8.0,带有openSSL和多键字符串
  • 浏览器具有WebAuthn支持(Firefox 60+,Chrome 67+,Edge 18+,Safari 13+)
  • ED25519支持的PHP钠(或钠兼容)

关于WebAuthn的信息

  • 维基百科
  • W3C
  • MDN
  • Dev.yubico
  • FIDO联盟
  • Passkeys

FIDO2硬件

  • 尤比科
  • 独奏开源!
  • Nitrokey
  • Feitan
  • TrustKey
  • Google Titan
  • 保护
  • Onespan
  • Hypersecu
  • Kensington Verimark™
  • token2

下载源码

通过命令行克隆项目:

git clone https://github.com/lbuchs/WebAuthn.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 WebAuthn https://www.zuozi.net/32048.html

heatmap.js
上一篇: heatmap.js
Bing.NetCore
下一篇: Bing.NetCore
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务