我尝试将U2F实现到我的Web应用程序中。由于应用程序可以使用多个URL,因此我必须添加一个带有有效FacetID的JSON文件,如spec中所述。 Yubico在website上对该规范的摘要较短。
不幸的是,当我调用u2f.register(...)
方法时,我收到错误代码2,这意味着AppID存在问题。
我的AppID是JSON文件的URL。如规范中所述,我添加application/fido.trusted-apps+json
作为内容类型。无论如何,永远不会调用此URL。
我使用的是最新的Chrome(v46.0.2490.80m)。如上所述[{3}},Chrome扩展程序不再需要了。
此外,我在Chromium项目中找到了一个关闭的here,它告诉我U2F是根据规范实现的。
使用Bug Report。
代替Chrome扩展程序这是u2f-api.js的问题吗?有更新的吗?
到目前为止,这是我的代码:
var u2frequest =
[
{
"appId":"https://localhost:44300/api/u2f/appids.json",
"challenge":"hDharTG-SROuScxyD7ACpMDp4xl6A91E9nUPXDRSo_4",
"version":"U2F_V2"
}
];
u2f.register(u2frequest, [], function (data) {
// I always get data={errorCode:2} here.
}
答案 0 :(得分:2)
Facets不适用于自签名证书。因此,单个身份应用程序在localhost上可以正常工作,但多个标识在localhost上不起作用。
最佳解决方案是租用VPS并获得Letsencrypt证书。
答案 1 :(得分:1)
我猜你的appjd json有不同的起源,facetID的来源必须与AppID相同, 例如:中的所有facetID必须具有相同的https://*.example.com
来源因此,在您的情况下,您的trustFaceID应该都属于https://example.com/app-id.json