我们正尝试通过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 -
提供的设备不符合此请求的条件。对于注册请求,这可能意味着令牌已经注册,对于签名请求,这可能意味着令牌不知道所呈现的密钥句柄。