security - 使用 WebAuthN 可以拒绝某些类型的身份验证方法 FIDO2)
问题描述
使用 WebAuthN ( https://w3c.github.io/webauthn/ ) 进行身份验证时,是否可以隐藏某些身份验证选项?
例如,在 webauthn.io 上进行测试时,我的 android 设备显示了可用的身份验证类型,如硬件密钥、蓝牙和指纹。我是否可以以某种方式将其配置为不接受硬件密钥和蓝牙。
此外,在选择并使用我的指纹登录时,如果我使用错误的手指强制它失败,它默认会询问我的解锁图案,如果我输入我的解锁图案,我仍然会成功。在我看来,解锁图案并不安全,因为脏屏幕会在屏幕上留下带有污迹的图案。父母也把别针给孩子。我可以停止这种行为吗?如果指纹失败,则改为错误?
解决方案
不是专家,但这是我最近在我们的身份提供者中实现 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 确实支持撤销认证,依赖方应该尊重这一点。
推荐阅读
- python - 如何获取选定的 qTableView 行值(所有列)
- c# - ForEach 中的 Radzen 验证
- python - 遍历列表时,如何跳过某个元素
- postgresql - CloudSQL“pg_hba.conf 拒绝主机连接”pmm-agent
- python - 在 Python 中使用递归回溯解决 TweetMazes - 调试帮助请求
- c# - C# RestSharp AddJsonBody() 不添加 API 调用正文名称
- c# - 从 Rfc2898DeriveBytes 生成 AES IV
- image-processing - 如何结合这两个 imagemagick convert 命令?
- python - Matplotlib:使用字符串作为值而不是数字
- javascript - 如何创建具有写入字节限制的 WriteStream?