使用 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将现代身份验证的便捷性和安全性推向新高度

Webauthn - 添加第二个 MFA 设备

如何为Android和IOS实现FIDO2(WebAuthn)

调用WebService时加入身份验证,以拒绝未授权的访问

Windows 身份验证 - 如何使用代码拒绝用户

尝试通过 oauth 进行身份验证时访问被拒绝