问题标签 [webauthn]
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.
webauthn - 确保使用 FIDO2 认证的安全密钥
我们计划为包含敏感数据的 IT 系统引入 FIDO2 安全密钥和无密码登录,并希望确保仅使用FIDO2 认证的安全密钥。我们如何在注册过程中识别这些密钥并拒绝未经认证的密钥?WebAuthn 是否提供有关密钥的任何此类信息?有可能吗?
我们的目标是防止使用未正确实施的安全密钥,例如未将私钥存储在安全硬件中或跳过用户验证的密钥。我们希望防止人们无意或有意地损害安全性。
IT 系统具有 Web 用户界面。因此与 FIDO2 密钥的通信将通过 HTML / Javascript / WebAuthn。
我们知道我们可以购买经过认证的安全密钥,集中配置它们,然后将它们分发给用户。然而,这个过程成本高且缓慢。因此,我们希望用户可以自带或购买自己的 FIDO2 密钥并自行注册。
android - 棒棒糖上的 Fido2
我想在我的应用程序中实现 Fido2。我在这里找到了 webauthn 实现https://github.com/duo-labs/android-webauthn-authenticator,它正在使用 BiometricPrompt。它应该如何在没有指纹功能的旧设备上工作?我知道有兼容的 BiometricPrompt 应该在 Android 9 以下工作,但是 Android 5 呢?
ios - iOS Fido2 BLE 身份验证器注册响应问题
我正在构建一个 iOS ble fido2 身份验证器。收到注册请求后,将以下注册响应(NONE 证明)作为 3 个块(块大小 101)发送。还确保成功接收到块但是 webauthn 客户端没有发送任何错误/确认/没有 ui 更改发生。
被这个问题困扰了很久。无法找出以下响应出了什么问题。
[131、0、237、0、163、1、100、110、111、110、101、2、88、224、116、166、234、146、19、201、156、47、116、178、36 , 146, 179, 32, 207, 64, 38, 42, 148, 193, 169, 80, 160, 57, 127, 41, 37, 11, 96, 132, 30, 240, 69, 217, 93, 96 , 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 51, 85, 191, 68, 43, 240, 76 , 144, 137, 91, 65, 40, 160, 206, 219, 169, 96, 183, 153, 21, 21, 63, 46, 204, 106, 131, 137, 30, 106, 102, 13, 92 , 99, 165, 1, 2, 3, 38, 32, 1, 33, 152, 32, 24, 138, 24, 231, 24, 213, 24, 124, 24, 203, 24, 71, 24, 212 , 24, 46, 16, 24, 184, 24, 207, 24, 210, 24, 170, 24, 59, 24, 99, 24, 39, 24, 250, 24, 81, 24, 98, 24, 27 , 24, 25, 24, 39, 24, 75, 24, 202, 24, 62, 24, 163, 24, 64, 24, 126, 24, 214, 24, 63, 24, 247, 24, 197, 34 , 152, 32, 12, 24, 214, 24, 121, 24, 78, 24, 132, 24, 152, 24, 104, 12, 18, 24, 120, 24, 156, 24, 177, 24, 101 , 24, 45, 24,227、24、177、24、213、24、151、24、76、24、136、24、121、24、39、24、47、24、153、24、196、24、24、24、100、 24、82、24、163、24、83、24、193、24、38、3、160]
[131, 0, 237, 0, ......] 131 => msg 0 => LLen 237 => HLen 0 => 成功后跟 authData ....
AUTHDATA (224 字节) [116, 166, 234, 146, 19, 201, 156, 47, 116, 178, 36, 146, 179, 32, 207, 64, 38, 42, 148, 193, 169, 80, 160, 57, 127, 41, 37, 11, 96, 132, 30, 240, 69, 217, 93, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 51, 85, 191, 68, 43, 240, 76, 144, 137, 91, 65, 40, 160, 206, 219, 169, 96, 183, 153, 21, 21, 63, 46, 204, 106, 131, 137, 30, 106, 102, 13, 92, 99, 165, 1, 2, 3, 38, 32, 1, 33, 152, 32, 24, 138, 24, 231, 24, 213, 24, 124, 24, 203, 24, 71, 24, 212, 24, 46, 16, 24, 184, 24, 207, 24, 210, 24, 170, 24, 59, 24, 99, 24, 39, 24, 250, 24, 81, 24, 98, 24, 27, 24, 25, 24, 39, 24, 75, 24, 202, 24, 62, 24, 163、24、64、24、126、24、214、24、63、24、247、24、197、34、152、32、12、24、214、24、121、24、78、24、132、 24, 152, 24, 104, 12, 18, 24, 120, 24, 156, 24, 177, 24, 101, 24, 45, 24, 227, 24, 177, 24, 213, 24, 151, 24,76, 24, 136, 24, 121, 24, 39, 24, 47, 24, 153, 24, 196, 24, 24, 24, 100, 24, 82, 24, 163, 24, 83, 24, 193, 24, 38]
证明凭证数据(187 字节) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 51, 85, 191, 68, 43、240、76、144、137、91、65、40、160、206、219、169、96、183、153、21、21、63、46、204、106、131、137、30、106、 102, 13, 92, 99, 165, 1, 2, 3, 38, 32, 1, 33, 152, 32, 24, 138, 24, 231, 24, 213, 24, 124, 24, 203, 24, 71, 24, 212, 24, 46, 16, 24, 184, 24, 207, 24, 210, 24, 170, 24, 59, 24, 99, 24, 39, 24, 250, 24, 81, 24, 98, 24, 27, 24, 25, 24, 39, 24, 75, 24, 202, 24, 62, 24, 163, 24, 64, 24, 126, 24, 214, 24, 63, 24, 247, 24, 197, 34, 152, 32, 12, 24, 214, 24, 121, 24, 78, 24, 132, 24, 152, 24, 104, 12, 18, 24, 120, 24, 156, 24, 177、24、101、24、45、24、227、24、177、24、213、24、151、24、76、24、136、24、121、24、39、24、47、24、153、 24、196、24、24、24、100、24、82、24、163、24、83、24、193、24、38]
java - 用于服务器端指纹验证的 WebAuthn
对于我现有的 Java Web 应用程序,我想启用指纹身份验证。以下是认证要求:
- 服务器应存储指纹的生物特征,指纹应与服务器上存储的生物特征匹配
- 这允许用户使用支持的指纹扫描仪从任何系统登录
- 我也希望 WebAuthn 的使用不会限制支持的指纹扫描仪,因为它是标准协议
我知道我可以将 WebAuthn 框架与 Mac OS TouchID 或 Windows Hello 一起使用。这允许使用存储在本地系统而不是服务器上的生物特征来完成指纹注册和验证。
我想知道是否可以使用 WebAuthn 框架来验证存储在服务器端的指纹。任何指向相关示例或教程的链接都将对我的 POC 有所帮助。
javascript - 如何确定设备是否可以在 Javascript 中使用 Webauthn 的指纹登录?
我为我的网站创建了 Webauthn 身份验证。现在我正在尝试创建一个良好的界面以获得最佳的用户体验。我的用户不是技术人员。
我对作为选项的指纹认证感兴趣。通过 Yubico 2 或 Google Titan 密钥的 webauthn 在我的用户中非常罕见。当用户使用电子邮件和密码登录时,我想显示一条消息,例如“您要为下次访问注册指纹吗?[立即注册]”。
我想向正确的用户展示信息。那么,如何决定在哪些情况下显示消息呢?
根据https://caniuse.com/#search=PublicKeyCredential,首先我可以使用这样的测试:
var support_webauthn = (typeof window['PublicKeyCredential'] !== "undefined")
这个测试判断浏览器是否支持公钥认证,也通过测试不知道硬件有没有指纹传感器。
我知道 Android 设备允许 Webauthn 指纹认证(例如,而不是 iPhone)。因此,除此之外,我还可以检查操作系统是否为 Android
isAndroid = /android/i.test(navigator.userAgent);
但在这种情况下,我无法使用其他受支持的设备向用户显示消息 - 例如使用 Macbook pro(指纹传感器工作)。
我该如何处理这个问题?
ios - iOS/Safari 上的 Webauthn 状态如何?
几天后我正在做一个关于 FIDO2/Webauthn 标准的演示,我很高兴在 Yubico 的网站上看到这篇文章,指出苹果已经像 Android 多年来一样通过 NFC 增加了对 FIDO 身份验证的支持。我让我的一些同事在运行 iOS 13.1 的较新设备上访问了各种 Webauthn 测试站点(webauthn.me、webauthn.io 等),但它们都显示错误,指出不支持浏览器(safari 和 chrome )。您是否需要做一些事情来启用此功能,或者我们是否正在等待 Apple 的更新以启用该功能?
webauthn - 带有 yubikey 的 Webauthn 扩展 HMACSecret
我无法理解如何在浏览器上使用带有 yubikey 4 或 5 的webauthn 扩展HMAC Secret 。
根据mozilla的说法,webauthn 扩展 HMAC secret 现在可以在 Firefox 69 上使用。
但是如果我去Webauthn test app,添加一个 HMAC Secret 设置为 的新凭证true
,然后使用 yubikey 4 或 5 创建凭证,凭证创建数据状态为:
扩展数据
没有扩展数据
我在 Chrome 或 Edge 上的结果相同
对我来说这是一个错误的用途吗?yubikey不支持扩展吗?是别的吗?
identityserver4 - 带有 WebAuthN 的 Identity Server 4 - 使用 GrantType (FIDO 2.0)
我正在使用 Identity Server 4 通过 WebAuthN ( https://w3c.github.io/webauthn/ ) 对用户进行身份验证。
我有多个客户端访问 api 客户端。我的 api 客户端负责决定使用哪个身份验证提供程序、传递数据(服务器到服务器、服务器到外部 api)并协调身份验证过程。
我们使用的一个身份验证提供程序是我们拥有的身份服务器 4,这是我们实现 WebAuthN 的地方。
我不确定哪种是在 Identity Server 4 中实现此功能的推荐方法。我只有 2 个选项
- 在身份服务器上创建 API 端点以对用户凭据进行身份验证
- 创建扩展授权类型并使用新授权类型调用 TokenEndpoint API(我的扩展授权类型将是内置混合授权类型后跟 WebAuthN 代码的混合)。
从安全的角度来看,这两种方式都有效(不打开一个洞)并且适合 ID4 还是有其他方式?
ssh - Is is possible to use the Web Authenitcation API with SSH keys?
It looks like the current Client to Authenticator Protocol (CTAP) is really geared towards physical authenticators. Has there been any attempt at having software authenticators, such as SSH keys or GPG keyring or Gnome Keyring?
webauthn - 登录尝试暴露的用户名?
我正在尝试扩展我的应用程序以支持 WebAuthn 登录。到目前为止,我已经在本地服务器上成功设置了一个测试应用程序(使用这个https://github.com/lbuchs/WebAuthn PHP 实现)。
我想我现在基本上理解了这个过程,但我有一个安全问题:当你使用 WebAuthn 作为唯一的身份验证因素(这应该是可能的)时,用户只输入他想要的用户名并通过指纹或他的指纹提供他的凭据YubiKey什么的。在此图中(https://developers.yubico.com/WebAuthn/Libraries/Using_a_library.html),据说服务器返回了与用户名关联的 credentialIds 列表。然后,身份验证者回答它拥有私钥的质询。
我的问题是:如果攻击者想找出存在哪些用户名,他可以尝试提供不同的用户名并测试服务器是否返回任何 credentialIds。这不是安全问题吗?通常攻击者不应该从失败的登录尝试中获得任何信息。