问题标签 [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 回答
54 浏览

fido-u2f - (为什么)没有带显示器的 FIDO 键?

由于 FIDO 密钥没有显示,因此您只能使用它们来验证自己,而不是授权某些操作(您不知道要授权什么操作)。

或者,如果您想授权某事,您需要相信您的浏览器显示的内容与您按下 FIDO 键上的按钮时将授权的内容相同 - 但我想知道为什么您根本需要硬件密钥,并且不要完全信任您的浏览器和您的密钥。

所以我不知何故看不到 FIDO 密钥的用处。有人可以启发我吗?

即使是一些简单的例子,比如登录我的电子邮件帐户——这难道不应该比身份验证更好吗?一旦我登录,控制我的浏览器(浏览器是中间人)的攻击者就可以永远保持登录状态,添加转发规则来拦截我的所有电子邮件,等等。

这一切是因为如果 FIDO 键必须包含显示器,它们会变得非常大吗?那么为什么不添加一个耳机插孔,至少通过文字转语音告诉我我正在授权什么?

0 投票
2 回答
923 浏览

android - 我可以将手机用作带有 Windows 10 登录选项的 webauthn 安全密钥吗

编辑: -

看看是我还是W3C 规范没有说这应该已经发生了:-

1.2.2。验证

在笔记本电脑或台式机上:

用户通过蓝牙将手机与笔记本电脑或台式机配对。

用户在浏览器中导航到 example.com 并开始登录。

用户从浏览器收到一条消息,“请在您的手机上完成此操作。”

接下来,在他们的手机上:

用户会看到离散提示或通知“登录 example.com”。

用户选择此提示/通知。

向用户显示他们的 example.com 身份的列表,例如,“以 Mohamed 身份登录/以张三身份登录”。

用户选择一个身份,提示输入授权手势(PIN、生物识别等)并提供。

现在,回到笔记本电脑上:

网页显示所选用户已登录,并导航到登录页面。

================

我的 WebAuthn 代码愉快地与 Windows Hello 交互,以通过 PIN 进行用户验证。我的三星 Android 手机愉快地与https://webauthn.appspot.com演示交互并接受指纹验证。

但我似乎无法将我的手机用作连接到我计算机上的 YubiKey 之类的安全密钥?

我可以通过蓝牙将它与 PC 配对或用 USB 电缆连接它,但 Windows 不会将它识别为安全密钥。

这是可能的,还是功能受到限制?如果我们可以使用我们的手机作为安全密钥,我们就不需要特殊的加密狗来进行平台无关的身份验证。

0 投票
2 回答
82 浏览

android - 通过 Android WebAuthn 禁用漫游身份验证器

有没有办法通过 WebAuthn for Android 禁用漫游身份验证器,并且只允许使用平台身份验证器?

我正在使用 Fido2ApiClient 的APIgetSignPendingIntent for WebAuthn,如果我尝试使用设备平台验证器上不存在的密钥登录,它将弹出一个屏幕,要求我设置漫游验证器(通过 USB、蓝牙, 或 NFC) 以继续登录。我希望在设备的平台身份验证器上不存在用于登录的密钥或以某种方式出现时抛出错误,而不是使用显示的漫游身份验证器的此选项通知设备上不存在该密钥。

有没有办法用 PublicKeyCredentialRequestOptions 指定这个?

0 投票
1 回答
42 浏览

webauthn - 如何重置 WebAuthn (FIDO) 加密狗密码?

我正在为我的网站实现 WebAuthn,并设置了userVerification: "required". 我在我的加密狗上设置了密码。如何重置我的加密狗密码?

0 投票
1 回答
210 浏览

asp.net-mvc - WebAuthn Credentials.Create 异常

我一直在努力解决这个问题的时间比我愿意承认的要长。我只是想使用 WebAutn 注册一个新设备。我已经尝试了至少两个不同的示例并检查了许多不同的代码。我似乎做的一切都是正确的......但无论我做什么,我都会得到同样无益的例外。我已经在网上搜索过,但似乎没有其他人得到这个例外,所以我真的不知道出了什么问题?

简而言之,在线 newCredential = await navigator.credentials.create({publicKey: options}); 我收到此错误:“异常:TypeError:无法在'CredentialsContainer'上执行'create':提供的值'2'不是AttestationConveyancePreference类型的有效枚举值。”

这是返回的 PublicKeyCredentialCreationOptions 并且我正在提交:注意:挑战和 user.id 都已填充,但由于它们是 ArrayBuffer(),因此它们不会打印。

任何帮助或建议将不胜感激!

更新:已经序列化/反序列化对象有一段时间了……但几乎总是针对 C# 而不是 JavaScript……因此,在遇到这个问题之前,我不知道 JavaScripts String Enum。我看到这是一个转换错误,但错误地认为 Fido2NetLib 必须返回所需的对象,因为没有其他人报告错误。

谢天谢地,Newtonsoft.Json 已经有了扩展,可以很容易地完成这个覆盖,我从这里发现了这一点。

因此,最后我必须使用 StringEnumConverter() 序列化对象,然后将其反序列化回我从 json 创建的自定义类,这是完全相同的东西,但具有 String Enum 值。我需要这样做,因为将 Json 传递给 Blazor.Interop 不起作用......它需要一个实际的对象。最后,我确信有一种更简洁的方法可以使用 String Enum 进行转换,但想要继续前进,我现在正在使用它。看:

0 投票
1 回答
193 浏览

android - 检查凭据是否存在而不提示在 Android 中输入指纹

是否有 API 或其他方法可以确定设备上是否存在不需要先在 Android 中获取我的指纹的凭据?

目前,我可以getSignPendingIntent(PublicKeyCredentialRequestOptions)使用特定的凭证 ID 进行呼叫,然后系统会提示我使用我的指纹。提供指纹后,如果设备上不存在凭据,我将返回错误响应,如果存在凭据,我将获得成功响应。

是否有另一种方法来确定设备上是否存在凭据?

需要知道这一点的一个原因是,如果客户在设备 A 上注册了凭据,然后在设备 B 上访问了网站。如果他们在设备 B 上,我不想提示他们输入指纹以了解他们是否可以使用他们的 WebAuthN 凭证。我想先检查凭据是否存在,否则回退到标准身份验证方法。

0 投票
2 回答
145 浏览

asp.net-mvc - 由于拆分架构导致的 WebAuthn 问题

我目前正在.Net 5.0 中开发一个独立的(不是 .Net Core 托管的)Blazor WebAssembly 应用程序。我一直在尝试将几个 Asp.Net MVC WebAuthn 示例转换为我的 Blazor 应用程序以进行无密码身份验证。

我现在遇到的问题是由于此应用的体系结构,因为它不是 Blazor Server 应用。我正在关注的 Asp.Net MVC 示例包含所有内容,包括托管在服务器上的客户端,而我的应用程序是拆分的 Web 客户端/Web API 架构。

然而到目前为止,我已经设法克服了这些差异,但现在我遇到的问题是在 Fido2NetLib 库的 Make Credential 请求中向服务器注册凭证的最后一个功能。在线的:

我收到一条错误消息:“来源 https://localhost:44325 不等于原始来源 https://localhost:44309”。现在当然这是一个开发环境,但它在生产环境中完全一样,因为 API 和客户端托管在两个不同的域中。

任何想法将不胜感激。我希望我可以“白名单”某些域?

0 投票
1 回答
164 浏览

ldap - ldap/openid 与 FIDO2 连接?

我想用多种服务设计我的私有云,让我的生活更轻松。为了更好的可用性,我希望能够使用相同的凭据登录。为此,我查看了 ldap 和 openID,尤其是 openldap 和 freeipa。但是随着 FIDO2 的出现并使登录变得更容易和更安全,我想知道是否有一种方法可以将 FIDO2 与 ldap 或 openID 结合使用,以便用户可以使用他们的 FIDO2 令牌登录,同时对所有服务拥有相同的凭据。

0 投票
1 回答
106 浏览

webauthn - 使用常驻密钥时,信赖方如何确定用户?

当客户端可发现的常驻密钥与 WebAuthN 一起使用时,依赖方不必首先识别尝试登录的用户。那么 RP 是如何知道哪个用户登录的呢?RP 是否只收到 AuthenticatorAssertionResponse 并从中获取 user.id?

0 投票
1 回答
145 浏览

webauthn - 使用 WebAuthN 检查平台身份验证器上是否有 credential_id

有没有办法在调用之前检查navigator.credentials.get平台身份验证器上是否存在凭据?例如,如果您指定只能使用平台身份验证器而不能使用漫游身份验证器,那么您如何知道凭据是否仍然存在于平台身份验证器上?如果正在使用的平台身份验证器是您的手机,那么当您将设备恢复出厂设置时,凭据将被删除。

我熟悉常驻密钥与非常驻密钥的概念,并且常驻密钥是可发现的。我问的是非常驻密钥用例。是唯一的

注意:我已经在这里问过类似的问题,但我在这里问的是不同的。我想知道如何从浏览器检查凭据是否存在,而不是像其他问题那样使用 Android API。