问题标签 [fido]

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 投票
0 回答
186 浏览

android - FIDO 客户端访问 BLE Authenticator

FIDO 客户端堆栈通过首先使用 FIDO GATT 定位配对的身份验证器设备,然后尝试使用其配对地址连接到该设备来支持蓝牙认证和断言。Android 和 iOS BLE 堆栈都包含 Resolvable Private Address 方法;意味着在来自设备上的身份验证器应用程序的每个新广告上,堆栈都会分配一个新的设备地址。在设备发现期间,堆栈使用配对时交换的 IRK 将新设备地址映射到原始配对地址。Chrome(和其他)上的 FIDO 客户端堆栈无法在 Android 或 iOS 上找到应用程序并且总是超时。但是,如果我在另一个选项卡中运行设备发现,例如通过使用 navigator.bluetooth.requestDevice() 来查找 Android 或 iOS 应用程序,然后运行相同的 FIDO 请求,一切都很好。这似乎表明 FIDO 堆栈跳过设备发现。有没有人遇到过这种情况,如果有,如何解决?

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?我肯定错过了什么。

0 投票
1 回答
116 浏览

rest - AAD - FIDO 实施

在我们现有的 AAD 上,我们正在尝试与 FIDO2 身份验证集成。

作为此集成 b/w AAD 和 FIDO 的一部分,在 Azure 门户中的“安全身份验证方法 | 身份验证方法策略(预览版)”下,已为 AD Admin 提供了 UI 选项,用于为将遵循的特定用户或组启用 FIDO 身份验证通过最终用户端使用 MS 自助服务门户“ https://myprofile.microsoft.com ”的设置过程

AAD 和 FIDO 集成中涉及的上述步骤是否可以通过图形 API 端点或任何其他休息端点以编程方式完成?

除了 Graph API 端点之外,AAD 是否有自己的 API 公共端点?如果没有,为什么 AAD 没有自己的 API 公共端点?

0 投票
0 回答
202 浏览

authentication - Yubico / Attestation 和 Assertion 之间的凭证 ID 长度不匹配

我正在使用 AAGUID 为 ff8a011f3-8c0a-4d15-8006-17111f9edc7d(Yubico v5.1 的安全密钥)的 Yubico 安全密钥为我的 Web 应用程序执行无密码身份验证。当我创建/注册新凭据时,我在创建凭据选项的authenticatorSelection部分中使用属性“ requireResidentKey = true ” :

返回的Attestation 数据包含 16 个字节的凭证 id:

所以例如我会收到一个 16 字节的 base64url id,看起来像:AUpf0KmNJrRluGG-65D54Q

然后我使用这个 16 字节的 id 作为密钥来保存生成的凭证。当我使用 Yubico 密钥登录时,返回的断言数据包含相同的 16 字节凭据 ID:

然后我可以使用这个凭证 ID 来检索我存储的凭证数据并验证断言。所以到目前为止一切都很好......

然后我正在阅读 W3C Editor's Draft on Web Authentication: An API for access Public Key Credentials Level 2并注意到“ requireResidentKey ”已被弃用,取而代之的是采用枚举值的“ residentKey ”属性:

requireResidentKey,布尔类型,默认为 false 注意:保留此成员是为了向后兼容 WebAuthn 级别 1,但不推荐使用 residentKey。如果调用者提供了 residentKey 并且客户端理解了后者,则忽略 requireResidentKey。否则,使用 requireResidentKey 的值。请注意,requireResidentKey 的值默认为 false。

如果在没有 residentKey 的情况下使用,它描述了依赖方对居民凭证的要求。如果 requireResidentKey 设置为 true,则验证者在创建公钥凭证时必须创建客户端驻留的公钥凭证源。

residentKey,类型为 ResidentKeyRequirement 注意:此成员取代 requireResidentKey。如果两者都存在并且客户端理解 residentKey,则使用 residentKey 而忽略 requireResidentKey。

有关 residentKey 的值和语义的描述,请参见 ResidentKeyRequirement。

所以我将requireResidentKey更改为residentKey,其枚举值为“ required ”,如图所示:

现在,当我创建一个新凭证时,我会返回一个64 字节的凭证 ID。这本来很好,只是当我使用 Yubico 安全密钥登录时,我得到一个16 字节的凭据 ID,它显然与我在创建凭据阶段保存的 64 字节不匹配。

有趣的是,当我尝试同时使用requireResidentKey = trueresidentKey = 'required'时,我得到了为 Attestation 和 Assertion 返回的 16 字节凭据 ID。

这可能是不支持新的residentKey属性吗?如果是这样,为什么我会得到一个 64 字节的凭证 ID?这可能是非居民凭证 ID 的长度吗?

我的代码正在使用旧的requireResidentKey属性恢复工作,但我很想知道这里发生了什么,以及新的 Yubikeys 是否支持residentKey属性?

0 投票
0 回答
367 浏览

security - 在路径而不是域根目录中托管数字资产链接 json 文件?

有没有人尝试在查询路径而不是域根目录中托管assetlinks.json文件?

背景: 我们目前正在开发与自定义 FIDO 服务器应用程序交互的 Android FIDO 客户端实现。

如果您有兴趣使用 Android FIDO2,这里是 codelab https://codelabs.developers.google.com/codelabs/fido2-for-android/#2

问题: 如果我们将文件托管在其他位置(也称为查询路径),Google Fido2ApiClient 会引发错误。

SECURITY_ERR(18) :无法验证传入请求

根据 Google Digital Links文档,他们建议将assetlinks.json 文件托管在域根目录中。

https://domain.name/.well-known/assetlinks.json

出于安全原因,我们的 SecOps 团队不同意这个想法。所以我的问题是:我们可以将这个assetlinks.json 文件托管在如下路径中吗?

https://domain.name/application/v1/.well-known/assetlinks.json

提前感谢您的评论!

0 投票
0 回答
188 浏览

android - 我们真的需要为 Android 应用托管assetlinks.json 文件吗?

根据 Google FIDO 文档,只有网站需要数字资产链接文件才能实现互操作性。

https://developers.google.com/identity/fido/android/native-apps#interoperability_with_your_website

我们真的需要为使用自定义 fido 服务器的 android 应用程序托管assetlinks.json文件吗?

0 投票
2 回答
607 浏览

android - FIDO 是否必须托管assetlinks.json 文件?

我有一个关于 FIDO2 的问题。

小背景: 我的公司决定使用 FIDO2 进行用户帐户管理。所以我们创建了一个主要使用 yubico webauthn 库的 FIDO 服务器包装器。在 Android 端,我们使用 Fido2ApiClient 谷歌播放服务原生库来支持 FIDO

根据 Fido 文档, https://developers.google.com/identity/fido/android/native-apps#interoperability_with_your_website 允许用户在您的网站和 Android 应用程序之间无缝共享凭据很简单。但是,我们没有使用任何网站,仅在 API 端点(AWS-ALB)中使用 FIDO 服务器

在没有托管assetlinks.json 文件的情况下,Android FIDO Authenticator 始终返回以下错误消息。

FIDO 是否必须托管assetlinks.json 文件?有没有人在不托管此文件的情况下取得成功?

0 投票
1 回答
385 浏览

webauthn - 关于 FIDO2 webauthn 和 U2F 的几个开放性问题

  • 我在多个地方读过,由于 U2F 没有用户的概念,它可以用作登录的因素之一(在 MFA 中),但不适合无密码,而 webauthn 有用户的概念,可以帮助无密码。我的问题是 webauthn 添加的额外内容是什么?是的,我们在创建凭据时确实传递了用户信息,但最终我们返回了一个凭据 ID(这似乎与密钥句柄非常相似)并用于关联用户(在服务器上)。据我了解,webauthn def 具有使用不同身份验证器(不仅仅是 U2F 密钥)的优势,但除此之外,webauthn 究竟添加了什么以使无密码更容易。

  • CTAP 描述了浏览器和操作系统如何通过 USB、NFC 或 BLE 通信介质与兼容的身份验证设备建立通信。我们可以说 CTAP 是一种应用层协议(如 FTP 吗?)

  • 当我在我的安卓手机上使用指纹功能使用 webauthn 进行验证时,浏览器是否使用 CTAP2 与操作系统进行通信(进而弹出身份验证器)?ufc、nfc、ble、internal 哪里来的?

  • 这是浏览器对 webauthn 的支持图表。在 chrome/android 中,对 WebAuthnAPI 的稳定支持但对 CTAP2 的开发支持是什么意思?这是否意味着不支持某些身份验证器? 浏览器对 webauth 的支持

0 投票
3 回答
260 浏览

android - 系统完整性调用错误。907135701

集成华为 FIDO bioAuth 时出现错误。

E/HMSSDK_com.huawei.hms.support.api.fido.bioauthn.FingerprintManager: System integrity invocation error. 907135701: