3

ホスト名をアプリ ID ( https://auth.company.com )として認証 Web アプリで U2F を直接使用しており、正常に動作しています。ただし、 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 インターフェースを介してクライアント アプリのホスト名を認証サーバーに渡すだけで、認証サーバーはそれをアプリ ID として使用します。これまでのところ問題なく動作しているようです。

私がファセットで抱えていた問題は、dev で http を使用していて、Firefox U2F プラグインが JSON ファセットでそれを許可していないことが原因でした。

于 2016-11-03T17:02:09.560 に答える