如何确定设备是否可以使用Java中的Webauthn指纹登录?

问题描述 投票:0回答:1

我为我的网站创建了Webauthn身份验证。现在,我正在尝试创建一个良好的界面,以获得最佳的用户体验。我的用户不是技术人员。

我对指纹认证感兴趣。通过Yubico 2或Google Titan密钥进行的webauthn在我的用户中很少见。当用户使用电子邮件和密码登录时,我要显示一条消息,例如“是否要为下次访问注册指纹?[立即注册]。

我想向正确的用户显示该消息。那么,如何决定在哪种情况下显示此消息?

根据https://caniuse.com/#search=PublicKeyCredential,首先,我可以使用这样的测试:

var support_webauthn = (typeof window['PublicKeyCredential'] !== "undefined")

此测试确定浏览器是否支持公钥身份验证,并且还通过了我不知道硬件是否具有指纹传感器的测试。

我知道Android设备允许Webauthn指纹认证(例如,代替iPhone)。因此,除此之外,我还可以检查操作系统是否为AndroidisAndroid = /android/i.test(navigator.userAgent);

但是在这种情况下,我无法通过其他受支持的设备向用户显示该消息-例如,使用Macbook pro(指纹传感器正常工作)。

我该如何解决这个问题?

javascript authentication user-experience feature-detection webauthn
1个回答
0
投票

简短回答: WebAuthn不允许您执行诸如验证Authenticator是否具有指纹传感器的操作。

但是您可以使用PublicKeyCredential做哪些操作,使您能够检测用户是否具有内置身份验证器,例如Windows Hello,TouchID,带有指纹传感器的Android设备(即使没有指纹传感器,屏幕锁也可以提供等效的用户验证功能)。 )使用PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable。因此,此函数返回布尔值,如果用户具有内置的身份验证器,则可以使用Javascript进行检查,如果经过了这种处理,则可以使用指纹传感器或屏幕锁定来注册用户,否则就不会提示用户了。我个人从未看过android,但总的来说,这对于检测内置身份验证器很有用。

示例项目可在此处找到android:

https://fidoalliance.org/developer-tutorial-webauthn-web-fido2-android/https://codelabs.developers.google.com/codelabs/webauthn-reauth/#0

© www.soinside.com 2019 - 2024. All rights reserved.