具有多方面应用程序ID的U2F

时间:2016-11-03 14:11:18

标签: fido-u2f yubico

我们已经在我们的auth网络应用上直接使用U2F,主机名为我们的应用ID(https://auth.company.com)并且工作正常。但是,我们希望能够通过HTTP API与其他应用程序(以及https://customer.app.com)与auth服务器通信的auth服务器进行身份验证。

我可以通过API调用生成符号请求和什么,然后将它们返回给客户端应用程序,但它在服务器端(auth服务器)失败,因为应用程序ID没有验证(客户端正在使用自己的主机名作为应用程序ID)。这是可以理解的,但我该如何处理呢?我已经阅读过关于方面的内容,但我根本无法使用它。

客户端应用程序JS就像:

var registerRequests = // ...
var signRequests = // ...

u2f.register('http://localhost:3000/facets', registerRequests, signRequests, function(registerResponse) {
  if (registerResponse.errorCode) {
    return alert("Registration error: " + registerResponse.errorCode);
  }

  // etc.
});

一段时间后,这给了我一个错误代码5(超时错误)。我没有看到任何/ facets的请求。有没有办法解决这个问题,还是我在错误的树(或不同的森林)上咆哮?

----

好的,经过几个小时的研究后呢?我非常肯定Firefox U2F插件的这个恶魔般的一点是我的一些困境的来源:

if (u.scheme == "http")
  if (url2str(u, true) == url2str(ou, true))
    return resolve(challenge);
  else
    return reject("Not matching appID");

https://github.com/prefiks/u2f4moz/blob/master/ext/appIdValidator.js#L106-L110

它实质上是说,如果appID的方案是http,只有在它与网页主机完全相同时才允许它(它继续做这个行为用于获取受信任的facets JSON,但仅用于https)。

仍然不确定我是否在正确的轨道上,但我是如何尝试设计它的。

1 个答案:

答案 0 :(得分:0)

我不需要担心我的特殊情况。最后,我只是通过安全API接口将客户端应用程序主机名传递给Auth服务器,并将其用作应用程序ID。到目前为止似乎工作正常。

我遇到的问题是由于在开发中使用http而Firefox和U2F插件不允许使用JSON方面。