问题标签 [fido-u2f]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
48 浏览

c++ - 从本机代码返回到托管会破坏返回的对象

我正在尝试使用 C++/CLI 和 yubico 的 libu2f-host( https://github.com/Yubico/libu2f-host )在我的 WPF 程序中构建 U2F 身份验证的实现我的 C++/CLI中有一个完全原生的函数dll 调用适当的 libu2f 函数,然后返回一个指向 u2f_reply(我自己的类)的指针,其中包含响应和错误代码。但是,当 dll 的托管部分接收到此对象时,响应代码仍然正确,但响应字符串似乎已完全损坏。

我尝试立即返回 char 指针,然后使用 marshal 将其转换为托管字符串,并且我尝试使用标准 C# 字符串。我尝试使用 memcpy 将响应复制到 reply->response 但没有运气。

我希望它返回一个带有响应数据的 json 对象,如下所示:https://developers.yubico.com/libu2f-host/,但我得到一个随机的 ASCII 字符字符串(不能在这里粘贴)并且没有错误

0 投票
1 回答
330 浏览

javascript - 在 Cypress 中模拟 U2F 令牌以自动测试 Web 登录

我想在 Cypress + TS 上自动登录使用 U2F 和 USB 安全密钥的网站。我的脚本应该模拟密钥并将其传递给浏览器。

现在我一直在使用https://github.com/github/SoftU2F这是一个很好的解决方案,但在测试运行时仍然需要有人在场。

试图申请:https ://www.npmjs.com/package/virtual-u2f但是,虽然它正确生成密钥,但似乎没有任何东西传递给浏览器。

有没有人在 Js/Ts 上自动化那个登录之王?将不胜感激任何想法

0 投票
1 回答
714 浏览

nfc - How to enable web app U2F via NFC on mobile

If you attempt to login to github on mobile web, it automatically detects that it's a mobile device and lets you authenticate using a NFC key. I cannot find any documentation for implementing NFC 2FA for mobile web, anyone know how this is done?

Thanks, Kevin

Update:

I have found the vocabulary word for this - its "Webauthn" and apparently there is a way for webauthn to use a U2F device that was registered on a desktop web site on a mobile web site using mobile NFC. I've added the tag in the hopes that someone can help.

0 投票
1 回答
502 浏览

javascript - 如何在移动设备上通过 WebAuthn 使用 FIDO 凭据

我已经使用 firefox-built-in 和 chrome-with-javascript U2F API 实现了基于桌面浏览器的 U2F。我在这里遵循了基本配方:

https://github.com/castle/ruby-u2f

对于每个物理设备,我有 4 个属性:

  • 证书
  • 关键句柄
  • 公钥
  • 柜台

我相信,但我不确定,在收集到有关此物理设备的这些信息后,我现在可以在移动设备上呈现完全相同的网页以实现 WebAuthn 时重新调整它的用途,而不是为用户呈现网页要进行身份验证,将呈现移动操作系统本机接口以请求 NFC 身份验证(如果设备具有 NFC)。

我正在尝试使用上面的 4 个属性来使用 nav.credentials.get 呈现 javascript,但我被卡住了。

我不清楚以下哪项是正确的

A) 您可以使用在桌面网络上的 U2F 设备注册过程中收集和验证的凭据/信息通过网络身份验证在移动设备上进行身份验证

B)如果您希望在移动设备上使用 web authn,以便它可以触发本地移动 NFC 身份验证过程,除了常规的 U2F 流程外,您还必须秘密处理 webauthn 注册(“秘密”我不是指你'故意不告诉用户他们正在这样做,而是用户不知道 A 和 B 之间的区别)。

按照上面链接的示例,他们的 javascript 类似于:

在此处使用 Mozilla 示例:

https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialRequestOptions

我正在尝试将其调整为:

但尚不清楚我如何将 U2F 属性映射到 webauthn 属性。我似乎找不到这个工作的具体例子,但我确信它确实有效,因为 GitHub 和 DropBox 都有这个确切的流程——你在桌面网络上注册 U2F 设备,然后 NFC 设备可以在本机移动设备上使用.

顺便说一句,我想要实现这一点的原因是,在本机移动设备上的用户永远不必离开您的 Web 应用程序,呈现本机 NFC 界面并且它们被神奇地带回您的 Web 应用程序。我目前拥有的是,如果检测到移动设备,则呈现 OTP 界面,这需要用户切换到像 Authy 这样的身份验证器应用程序,然后复制 OTP 并返回移动网络。只需拉出我们的钥匙并发出嗡嗡声就更好了。

感谢您的帮助,凯文

0 投票
1 回答
172 浏览

javascript - 能够注册和签署多个 Fido U2F 安全密钥

如何添加在网站/应用程序上注册和签署多个安全密钥的功能

0 投票
1 回答
1554 浏览

javascript - 如何通过 Chrome 扩展替换 navigator.credentials.create 请求或响应参数?

我正在开发一个 chrome 扩展来修改来自 Web 服务的 U2F 创建请求参数。是否可以通过 Chrome 扩展替换navigator.credentials.create请求或响应参数?我找不到与此相关的资源。任何指针都会有所帮助。

特别是,当用户为网站注册 U2F 时,它会调用浏览器 Web API navigator.credentials.create,后者又会联系硬件令牌并返回响应。我想修改navigator.credentials.create网页调用的 API 的请求和响应。

0 投票
1 回答
65 浏览

javascript - 使用 Webauthn 防止弹出窗口出现

在实现使用Webauthn协议以允许用户使用 U2F 密钥注册和登录的服务时,它始终会显示一个弹出窗口。我发现用户体验不是很好,因为弹出窗口覆盖了我试图引导用户的区域。

我发现这种用户体验更好:https ://mdp.github.io/u2fdemo

答案可能是“否”,但也许我错过了:是否可以使用 Webauthn 控制用户体验?具体来说,可以防止弹出窗口出现吗?

0 投票
0 回答
233 浏览

android - 使用 Xamarin 在 Android 上的 FIDO2

我们有一个使用 Xamarin 和 webview 的 android 应用程序。我们的客户使用该应用程序连接到他们自己的服务器,并希望使用 FIDO2 无密码登录;他们目前使用用户名和密码。

有解决方案吗?到哪里去寻找这个问题的答案?

0 投票
1 回答
57 浏览

webauthn - 为什么网络钓鱼网站会要求用户通过 webauthn,而不是直接要求用户名/密码?

我知道 FIDO webauthn 协议是网络钓鱼证明,但为什么网络钓鱼网站会要求用户通过 webauthn,而不是它可以明确要求用户名/密码。

我试图暗示的是,只有当它在其所有身份验证端点上完全启用 FIDO 时,FIDO 才是服务的网络钓鱼证明。如果它在少数端点上具有 FIDO,但甚至有一个端点是单因素的,那么您仍然容易受到网络钓鱼的影响。我的理解是,当 FIDO 说它的网络钓鱼证明时,这意味着即使攻击者掌握了您的凭据,它也是无用的,因为他们仍然必须使用 FIDO 密钥来访问该帐户。而且由于单因素端点暴露了这一点,除非您完全使用 FIDO,否则您不是网络钓鱼证明。我的理解正确吗?

0 投票
1 回答
401 浏览

webauthn - FIDO2 与 U2F/CTAP1 的兼容性

有很多消息来源说 FIDO2/CTAP2 向后兼容 U2F:

...所有以前认证的 FIDO U2F 安全密钥和 YubiKey 将继续作为支持 WebAuthn 的 Web 浏览器和在线服务的第二因素身份验证登录体验。-尤比科

但是在查看了规范之后,我很难看到它在实践中是如何工作的。具体来说,FIDO2 的依赖方标识符和 U2F 的应用程序身份之间似乎存在不匹配。

在 U2F 中,应用程序标识是一个 URL,例如https://example.com. 应用程序标识的 SHA-256 称为应用程序参数应用程序参数是在注册和认证过程中实际发送给认证者的参数。

在 FIDO2 中,等价物似乎是依赖方标识符,它被定义为域名,例如example.com.

依赖方标识符应用程序身份在 FIDO2/CTAP2 和 U2F 中的用途相同。但是,CTAP2 身份验证器直接将依赖方标识符作为 UTF8 字符串获取,而 U2F 身份验证器仅获取应用程序身份的 SHA-256 哈希(应用程序参数)。

CTAP的FIDO 文档描述了 CTAP2 如何映射到 CTAP1/U2F。在其中,他们只是将依赖方标识符直接视为应用程序身份

令 rpIdHash 为大小为 32 的字节数组,使用 rp.id 参数的 SHA-256 哈希作为 CTAP1/U2F 应用程序参数(32 字节)初始化

CTAP 文档中的图形

这似乎不一致。假设我是example.com,并且我很早就采用了 U2F 第二因素身份验证。我的应用程序 IDhttps://example.com,所以我原来的 U2F 应用程序参数是SHA256("https://example.com")

但是,如果我随后切换到使用 Webauthn,我的依赖方标识符将只是example.com. 如fido-client-to-authenticator-protocol-v2.0 的第 7 节所述,将其转换为U2F 应用程序参数时,结果值应为:SHA256("example.com")

那显然是不同的。在我切换到 WebAuthn 后,以前设置了 U2F 密钥以用于我的网站的任何人都将无法再使用它们:除非他们重新注册了他们的密钥。当然,他们需要能够登录才能做到这一点。

深入挖掘,我注意到他们在文档中给出的示例有一个依赖方标识符example.com但他们在示例中给出的哈希是......

这不是上述两个选项中的任何一个。我仍然不清楚什么字符串散列到该值。

那么我在这里做错了什么?使用 U2F 部署 2FA 的服务如何在不要求用户重新注册其安全密钥的情况下切换到 FIDO2/Webauthn?我肯定错过了什么。