我们正在尝试通过 Yubico FIDO U2F 安全密钥将身份验证添加到我们的管理网站。这在安装了 U2F 附加组件的 FireFox 中有效,但签署挑战(使用 javascript)登录时不断返回 {errorCode: 4}。
有谁知道为什么会发生这种情况或我如何调试出了什么问题?
提前致谢。
细节
我们的网站是用 Java 和 ZK 框架制作的。在服务器端,我们使用 java-u2flib-server 库。我们使用高级 api 函数 u2f.register 和 u2f.sign 使用 zul 文件中的 javascript 在客户端对请求进行签名。
登记
要注册密钥,用户首先输入名称和密码并提交。服务器创建 RegistrationData 并转到第二个页面。在那里,我们使用 javascript 函数 u2f.register。在回调中,我们将带有 DeviceRegistration 的响应发送到服务器。
这适用于 FireFox 和 Chrome。
认证/登录
登录方式类似。提交第一页时,服务器向第二页提供 DeviceRegistration json 和质询。该页面使用 u2f.sign 并在回调中将 DeviceResponse 发送到服务器。
这在 Firefox 中有效,但在 Chrome 中,u2f.sign 不断返回 {errorCode: 4}。
根据文档,这意味着设备不知道接收到的 DeviceRegistration 但这似乎不太可能,因为相同的代码在 Firefox 中工作,我检查了它们是否从服务器接收到相同的 json。
错误代码 4 - DEVICE_INELIGIBLE -
呈现的设备不符合此请求的条件。对于注册请求,这可能意味着令牌已经注册,对于签名请求,这可能意味着令牌不知道所提供的密钥句柄。