U2F 多方位 App ID

U2F with multi-facet App ID

我们一直在我们的 auth web 应用程序上直接使用 U2F,主机名作为我们的应用程序 ID (https://auth.company.com) and that's working fine. However, we'd like to be able to authenticate with the auth server from other apps (and hostnames, e.g. https://customer.app.com),通过 HTTP API.

与 auth 服务器通信

我可以通过 API 调用和 return 向客户端应用程序生成签名请求和其他东西,但它在服务器端(auth 服务器)失败,因为应用程序 ID 没有t 验证(客户端使用他们自己的主机名作为应用程序 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,只有当它与页面的主机完全相同时才允许它(它继续执行获取受信任方面的行为 JSON 但仅适用于 https ).

尽管我尝试设计它的方式仍然不确定我是否在正确的轨道上。

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

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