使用 WebAuthN 可以拒绝某些类型的身份验证方法 FIDO2)
Posted
技术标签:
【中文标题】使用 WebAuthN 可以拒绝某些类型的身份验证方法 FIDO2)【英文标题】:With WebAuthN is it possible to deny certain types of authentication methods FIDO2) 【发布时间】:2020-03-21 11:36:43 【问题描述】:使用 WebAuthN (https://w3c.github.io/webauthn/) 进行身份验证时,是否可以隐藏某些身份验证选项?
例如,在 webauthn.io 上进行测试时,我的 android 设备会显示可用的身份验证类型,例如硬件密钥、蓝牙和指纹。我是否可以以某种方式将其配置为不接受硬件密钥和蓝牙。
另外,当我选择并使用我的指纹登录时,如果我用错误的手指强制它失败,它默认会询问我的解锁图案,如果我输入我的解锁图案,我仍然会成功。在我看来,解锁图案并不安全,因为脏屏幕会在屏幕上留下带有污迹的图案。父母也把别针给孩子。如果指纹失败,我可以停止这种行为吗?
【问题讨论】:
【参考方案1】:不是专家,但这是我最近在我们的身份提供者中实现 WebAuthn/FIDO2 支持时发现的:
authenticatorSelection.authenticatorAttachment
- 当您创建navigator.credentials.create()
的请求时,您可以指定它应该使用platform
(即内置生物识别/PIN)还是cross-platform
(例如,外部USB/BT/NFC 设备) .请注意,这只是给用户代理一个关于你在追求什么的提示。
authenticatorSelection.userVerification
- 将其设置为 required
,除了验证存在之外,它还需要用户额外的因素 - 即 PIN 或生物识别挑战
证明 - 符合 FIDO2 的设备可以提供可通过元数据服务验证的证明信息。这将公开设备的功能,您可以以此为基础制定策略。例如。你可以坚持它必须使用防篡改硬件来保护私钥。
身份验证结果 - 可以提供有关如何验证用户的信息,以便您可以围绕此制定策略。此扩展的规范在这里:https://www.w3.org/TR/webauthn/#sctn-uvm-extension
建议不要专门将设备列入黑/白名单,但 MDS 确实支持撤销认证,依赖方应尊重这一点。
【讨论】:
使用第 1 步和第 2 步,我可以直接进行生物识别(和别针)。我仍然无法区分是使用 PIN 还是生物识别。我从成功的navigator.credentials.create
搜索了结果,但看不到任何我可以使用的东西,不幸的是,navigator.credentials.get
的结果相同
您是否尝试过请求 UVM 扩展?这可以在响应中包含其他标志,告诉您有关设备的更多信息以及使用的方法。 w3.org/TR/webauthn/#sctn-uvm-extension
谢谢,看起来这是正确的扩展,但我无法让它在 chrome 中工作
我怀疑这更多取决于设备本身支持的内容。我没有进行详尽的测试,因为我目前的要求并不需要我知道。最终,尽管我想将发回的标志转换为 amr
在我的 IDP 发出的结果令牌中声明值。
所以它在 Chrome 上工作,但 UVM 包含用户每次都可以验证的所有可能方式。因此,无论我使用指纹、大头针还是绘制图案,chrome 总是返回所有 3。根本没有帮助.....以上是关于使用 WebAuthN 可以拒绝某些类型的身份验证方法 FIDO2)的主要内容,如果未能解决你的问题,请参考以下文章
Auth0 WebAuthn Passwordless将现代身份验证的便捷性和安全性推向新高度