misskey-dev / misskey

🌎 A completely free and open interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
9.99k stars 1.36k forks source link

セキュリティキーを登録できない #8691

Closed u1-liquid closed 1 year ago

u1-liquid commented 2 years ago

💡 Summary

セキュリティキーを登録しようとすると ・unsupported fmtというエラーが発生して登録できない ・エラーが発生してもエラーポップアップは発生してない

🥰 Expected Behavior

「セキュリティキーを登録する」ボタンを押すとセキュリティキーが登録される

🤬 Actual Behavior

image 「セキュリティキーを登録する」ボタンを押すとぐるぐるアニメーションが無限に発生する

以下のようなエラーがコンソールに残っている

Uncaught (in promise) 
Object
  code: "INTERNAL_ERROR"
  id: "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
  info:
    e:
      code: "Error"
      message: "unsupported fmt"
      stack: "Error: unsupported fmt\n    at file:///misskey/packages/backend/built/server/api/endpoints/i/2fa/key-done.js:64:15\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n    at async default (file:///misskey/packages/backend/built/server/api/call.js:89:12)"
      [[Prototype]]: Object
    [[Prototype]]: Object
  kind: "server"
  message: "Internal error occurred. Please contact us if the error persists."
  [[Prototype]]: Object

📝 Steps to Reproduce

  1. セキュリティキー登録画面を開く
  2. セキュリティキーをタッチ、名前を入力
  3. 「セキュリティキーを登録する」ボタンを押す

📌 Environment

Misskey version: 12.110.1 (misskey.io) Your OS: Windows 11 Pro 22H2 22621.1 Your browser: Google Chrome 103.0.5057.3(Official Build)dev (64 ビット)

u1-liquid commented 2 years ago

現在未対応のAttestation値だったのが原因だった

標準のTR文書によると https://www.w3.org/TR/webauthn-2/#sctn-attstn-fmt-ids

Attestation statement format identifierとして定義されてるのは

現在実装済みのAttestationは https://github.com/misskey-dev/misskey/blob/fee2878b98253f2510ae2bc5c746c058a043ef82/packages/backend/src/server/api/2fa.ts#L146

らしい

tpmとappleを実装すればいいのかな?

実装にあたって参考になりそうなレポジトリー https://github.com/duo-labs/webauthn/tree/master/protocol

u1-liquid commented 2 years ago

Misskeyのコード内で実装するよりこういったライブラリを使ったほうがメンテナンスに良さそう

クライアントサイド https://github.com/github/webauthn-json サーバーサイド https://github.com/webauthn-open-source/fido2-lib

tamaina commented 2 years ago

(自前実装なことにびっくりしている)

4ioskd commented 2 years ago

同じく、自前実装ということにびっくり。

Roadmapの「(2) Improve functionality」に加えてはどうでしょうか。 https://github.com/misskey-dev/misskey/blob/develop/ROADMAP.md

(あとラベルはFeatureとか付けた方が良さそう?)

syuilo commented 1 year ago

done