WebAuthn サポート

とても素晴らしいです!

ただ、一つだけ小さな気になります:Safari(Mac)では、Web 認証は開発者向けの機能であり、デフォルトでは無効になっています。有効にすれば問題なく動作しますが、Web 認証が有効になっていない場合は、メッセージや警告を表示するべきでしょう。現在、デフォルトの Safari では、登録プロセスが機能しないことを UI 上で示すものが何もありません(コンソールにはエラーが表示されます):

「いいね!」 11

navigator.credentials を使って機能検出ができると思います。

「いいね!」 9

一部の人々は、それが心地よいものだとわかっていても、追加費用を正当化するのが難しいようです :smiley:

「いいね!」 7

ああ、feature check は navigator.credentials.get に対して行ったけど create には行っていませんでした、申し訳ありません!すぐに修正します!

「いいね!」 8

最新のコミットは問題なく動作しているようです。今、Android スマートフォンで 2 段階認証(指紋認証付き)を使用できました。

「いいね!」 6

こんにちは、Penar さん。これに対する修正を準備しました。Safari で確認していただけますか?https://github.com/discourse/discourse/pull/8146。私が使用している機能検出の方法が、Safari でその機能がオフになっている場合でも機能するかどうかは確信が持てません。

「いいね!」 9

サムがマージで私より先にやっちゃったけど、Safari では問題なさそうだね。ありがとう、マーティン!

「いいね!」 10

はい、ただしこの場合はDiscourseでの通常の業務の一部となるため、費用は当社が負担いたします。もし不明瞭であればお詫び申し上げますが、これで明確になりましたでしょうか?

「いいね!」 9

WebAuthn サポート、おめでとうございます!webauthn gem を使わずに独自の実装をされたのが興味深いですね。もしフィードバックがあれば、ぜひ聞かせてください :smiley:

実装を確認したところ、アルゴリズム -7 (ES256) のみをサポートしていることに気づきました。しかし、Windows Hello のプラットフォーム認証器(TPM 2.0 ハードウェアをバックエンドとする)は、Microsoft のドキュメントによると -257 (RS256) が必要です。TPM 2.0 は、2016 年 7 月 28 日以降に発売された新しい Windows 10 デスクトップモデルで必須となっていますので、無視できない量のハードウェアが存在します。

「ログインフロー」のモックアップに関する提案ですが、WebAuthn には公式ロゴがあり、汎用的な指紋画像の代わりに使用できます。指紋以外にも、顔認証、スワイプパターン、PIN などが一般的なユーザー認証オプションとしてよく使われています。

「いいね!」 10

@Martin_Brennan 上矢印に関するご意見はありますか?

「いいね!」 6

Rafe さん、フィードバックありがとうございます。確かに追加のアルゴリズムを実装する必要がありますね。公式ロゴへのリンクもありがとうございます!当初、アルゴリズムを 1 つだけ設定したのは、V1 で動作させるために必要な最小限のアルゴリズムを追加しようとしたためです。すべてのアルゴリズムの微妙な違いについて確信が持てず、私が入手できたすべての例で ES256 が使用されていたためです。

なぜ当時 gem を使わなかったのかという点については、かなり悩みましたし、いつかこの決断について質問されることも予想していました。実装をより深く理解するために、gem のコードをかなり読み込みました。主な理由は以下の通りです:

  1. Discourse に追加の依存関係を加えたくなかったからです。gem のコードがどれほど優れていようとも、すべての gem 依存関係はオーバーヘッドを追加します。
  2. Discourse のセキュリティ上極めて重要な部分がどのように動作するかを十分に理解したいと考えていました。コードを Discourse のコア内に置くことで、いわば「ブラックボックス」なしに、より明確で拡張しやすくなると考えました(これは gem 自体やその複雑さを批判するものではありません。実際、コードを見て確認することもできますし、何が起きているか追うのは非常に簡単でした)。
  3. WebAuthn を動作させるために必要な最小限のコード以上のものを追加したくなかったからです。例えば、初期実装ではアテステーションを省略しました。必要なものがスパナだけなのに、工具小屋全体を追加する意味はないと考えたためです。

とはいえ、これは私の誤判断だった可能性もあります。アテステーションやサポートされるアルゴリズムの増加など、WebAuthn サポートの V2、V3 へと進んでいくにつれて、私たちが「WebAuthn の専門家」になるための作業が過度に負担になるかもしれません。その時点で、gem の利用を再評価する必要があると思います。

「いいね!」 16

追加の RS256 アルゴリズムのサポートがマージされました FEATURE: Support RS256 algorithm for webauthn by martin-brennan · Pull Request #8385 · discourse/discourse · GitHub

「いいね!」 14

iOS 13.3 および macOS Catalina 10.15.2 が、FIDO2 認証もサポートするようになりました :partying_face:

このアップデートには、バグ修正やその他の改善も含まれています。このアップデートでは:

  • Safari において、NFC、USB、Lightning 対応の FIDO2 準拠セキュリティキーのサポートを追加
「いいね!」 8

iPhone がそれに対応するにはサードパーティ製デバイスが必要なのは残念ですね。iOS++ がデバイス認証とセキュアチップを内蔵していることを願っています。Windows、macOS、Android のようにね。

「いいね!」 9

Discourseのログイン画面を見るだけで、とてもワクワクしています!

実は、組み込みの認証機能サポートがまだないことに少し驚きましたが、それでも嬉しいニュースです。引き続きドキドキしながら待ちましょう。

「いいね!」 7

ホスト型の Discourse インスタンスにおいて、一部のユーザーの 2 要素認証(2FA)の有効化を示す際に、UI の不整合が観察されました:

「Staff」ユーザーをすべてリスト表示しても、私のアカウントが 2FA を有効にしていることが表示されません

  • アカウントサマリーページでは、「Two Factor Authentication の管理」というボタンテキストから、2FA がオンであると推測されます。

  • 「Two Factor Authentication」ページでは、セキュリティキーが有効であり、セカンダリファクターを無効にできることが示されています。

  • 同じインスタンス上の他のユーザーで、セキュリティキーを使用せずにトークンベースの認証アプリを選択している場合は、「すべてのユーザー」リストに鍵のアイコンが表示されます。

これが UI のバグなのか、それともこのプラットフォームにおいてセキュリティキーを追加するだけでは 2FA として不十分なのか、ご教示ください。

「いいね!」 5

これを確認いたしますが、UI の 2FA セクションが正しく表示されている場合、ユーザーリストに単なる UI のバグがある可能性が最も高いと思われます。ご報告ありがとうございます!

「いいね!」 9

それが問題でした。修正をここでビルドしており、可能次第マージします FIX: Admin user list not showing 2FA icon for only security keys enabled by martin-brennan · Pull Request #8839 · discourse/discourse · GitHub

編集:これで修正されました。

「いいね!」 11

勇気ある新しい世界へようこそ

Apple は 参加しました FIDO アライアンス(Fast Identity Online の略)に。この組織には Google、Intel、Microsoft、Samsung などの巨大企業もすでに含まれています。

「いいね!」 12

[quote=“Falco, post:36, topic:126454, full:true”]
iPhone にはサードパーティ製デバイスが必要なのは残念ですね。iOS++ がデバイス認証とセキュアチップを内蔵していることを願っています。Windows、macOS、Android のように。[/quote]

これは iOS 14 の TouchID / FaceID を使用して動作します。

「いいね!」 11