U2F与多方面的应用程序ID



我们已经直接使用U2F在我们的auth web应用程序与主机名作为我们的应用程序ID (https://auth.company.com),这工作得很好。但是,我们希望能够通过HTTP API与auth服务器通信的其他应用程序(和主机名,例如https://customer.app.com)与auth服务器进行身份验证。

我可以通过API调用生成签名请求和什么,并将它们返回给客户端应用程序,但它失败了服务器端(认证服务器),因为应用程序ID不验证(客户端使用自己的主机名作为应用程序ID)。这是可以理解的,但是我应该如何处理呢?我读过关于facet的书,但我根本无法让它工作。

客户端应用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(超时错误)一段时间后。我没有看到任何请求/facet。有办法解决这个问题吗?还是我找错了地方(或不同的森林)?

,

好了,在研究了几个小时之后;我很确定这个可怕的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,只有在它与页面的主机完全相同的情况下才允许它(它继续做获取可信方面JSON的行为,但仅限于https)。

我仍然不确定我是否在正确的轨道上,尽管我如何设计这个

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

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

相关内容

最新更新