3

我们一直在我们的身份验证网络应用程序上直接使用 U2F,主机名作为我们的应用程序 ID ( https://auth.company.com ),并且运行良好。但是,我们希望能够从通过 HTTP API 与身份验证服务器通信的其他应用程序(和主机名,例如https://customer.app.com )向身份验证服务器进行身份验证。

我可以通过 API 调用生成签名请求和其他内容并将它们返回给客户端应用程序,但它在服务器端(身份验证服务器)失败,因为应用程序 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 的任何请求。有没有办法解决这个问题,或者我在叫错树(或不同的森林)?

————</p>

好的,经过几个小时的研究;我很确定 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)。

仍然不确定我是否走在正确的轨道上,尽管我正在尝试设计这个。

4

1 回答 1

0

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

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

于 2016-11-03T17:02:09.560 回答