パスキーでパスワードなしログイン

Support passwordless login with Passkeys および数週間の社内テストを経て、Discourse にパスキーのサポートが追加されたことをお知らせできることを嬉しく思います。

パスキーとは

パスキーは、認証のためのパスワードを使用するよりも安全で簡単な代替手段です。パスキーの作成と使用は、現在、プラットフォームやブラウザで広くサポートされています。パスワードと比較して、パスキーは、強力なプラットフォーム生成の認証情報と生体認証(Touch ID、Face ID、PIN、またはデバイスのパスワードなど)による検証により、優れた組み込みの安全性を備えています。パスキーは、サーバー側の漏洩(キーのプライベート部分がデバイスから離れることはありません)やフィッシング(各キーは 1 つの Web サイト/サービスにのみリンクされます)からも安全です。

機能のロールアウト

ホストされているお客様の場合、パスキーのサポートは数日以内にインスタンスにロールアウトされます。すぐに有効にしたい場合は、meta の @team または team@discourse.org へのメールでお問い合わせください。

Discourse をセルフホストしている場合は、この機能がまもなく Discourse コアでデフォルトで有効になる予定です。このコミット以降、コアでデフォルトで有効になりました: https://github.com/discourse/discourse/commit/4d43ef5186db64db9c6f0e91314a9ae1a337290b。無効にしたい場合は、Rails コンソールから無効にできます。

launcher enter app
rails c
SiteSetting.enable_passkeys = false

パスキーは、ローカルログインが有効になっている Discourse インスタンスでのみ使用できることに注意してください。インスタンスでローカルログインが使用されていない場合、パスキー機能は効果がありません。


機能が有効になると、ユーザーはユーザー設定のセキュリティタブに移動してアカウントにパスキーを追加できます。

パスキーが登録されると、ユーザー名フィールドの下の自動入力ドロップダウン(1)または「パスキーでログイン」ボタン(2)をクリックして、パスキーでログインできます。

詳細情報

パスキーに関する多数のリソースとガイドが利用可能です。最も役立つと思われるものは次のとおりです。

将来的な改善の可能性

機能の初期ロールアウトが完了したら、次の改善を検討する可能性があります。

  • アカウント作成時にパスキーを設定できるようにする
  • 機密性の高いアクションを確認する際にパスキーを使用できるようにする(現在、ユーザー設定のセキュリティタブでサポートされていますが、一部の管理者専用画面ではサポートされていません)
  • パスワードを完全に削除できるようにする(ユーザーごとまたはインスタンスごと?)
「いいね!」 32

これは素晴らしい追加機能です!しかし、パスワードでログインすることでセキュリティ上のメリットを簡単に回避できてしまいます。パスワードを入力した後もパスキーを求められると予想していましたが、パスワードでログインするだけでした。これは、2FA設定でセキュリティキーを再登録することで回避できますが、それは明白ではなく、面倒です。

「いいね!」 3

@Be0さん、ありがとうございます。

現在のほとんどの実装では、パスキーはまだこのように展開されていません。2FAとは別に扱われています。このYouTubeのアプローチに関するレポートをご覧ください。業界も徐々に適応していくと思います。

期待どおりに機能させるには、2つの変更が必要です。

ステップ1:パスキーを2FAとして使用できるようにする(現在、指摘されているように、セキュリティキーは個別に登録する必要があります)。
ステップ2:ユーザーがパスキーを追加した場合に、パスワードログインで2FAを強制する。

ステップ1は、破壊的ではないため、理にかなっています。ステップ2も理にかなっていますが、ユーザーがブラウザからパスキーを削除した場合(または特定のデバイスにパスキーがない場合)、アクセスがブロックされるため、少し破壊的です。

しかし、これを検討する価値はあると思います。

「いいね!」 7

こんにちは、モバイル(Firefox)でDiscourseサイトを閲覧しているとき、パスキーがサポートされていませんが、これは意図したものでしょうか?

「いいね!」 4

Firefox は全体的にパスキーのサポートを追加するために積極的に取り組んでいると思いますが、このチャート を正しく読んでいるのであれば、まだ 100% ではありません。

バージョンとオペレーティングシステムによっては、まだ利用できない場合があります。macOS と iOS で簡単なテストを行ったところ、meta.discourse.org ではパスキー認証が利用可能で機能しました。

「いいね!」 5

投稿が新しいトピックに分割されました:vaultwardenでのパスキーの使用に関する問題

ブラウザの自動入力機能に何らかの理由でパスキーが含まれていない場合は、「パスキーでログイン」ボタンをクリックできます。

「いいね!」 3

ここに @team に PM を書くか、team@discourse.org にメールを送信していただければ、この機能を無効にできます。多くのウェブサービスが認証のより安全なオプションとしてパスキーを採用しているため、その実行はお勧めしません。

「いいね!」 4

パスキーとパスワードの両方を有効にしていると、パスキーの有用性が制限されるため、パスワードを無効にできるようにする(できればアカウント設定で、サイト全体で無効にすることを強制するとうまくいかない可能性があることがわかります)計画はありますか?愚かで複雑なパスワードを作成して、決して使用しないことで軽減できますが、それはパスキーのポイントを回避しているだけです。

「いいね!」 4

はい、それは良い(そしてアカウントのセキュリティ向上にもなる)と思います。現在、OPの「将来的な改善の可能性」セクションに追加しています。

「いいね!」 3

これは、パスキーの安全性にとって非常に重要です。パスワードログインを無効にできない場合、それらは単なる利便性にすぎません。

「いいね!」 2

パスキーの仕組みを正しく理解していれば、アクセスキーを保存するためにパスワードマネージャーのような信頼できるコンテナをインストールする必要があります。パスワードをなくすということは、すべてのユーザーがそのようなマネージャーをインストールしていることを前提としていますが、そうしなかったユーザーはどうやってログインするのでしょうか?

「いいね!」 1

2FAを使用しない人が2FAを必須とするサイトにアクセスする方法と同じです。アクセスできません。

これは、Chrome、Safari、Windows、iPhone、Android、Yubiなどが、パスワードマネージャー(2024年現在、すでに使用しているはずです)の代替となり、すべてパスキーで機能するため、実際には懸念事項ではありません。

また、すべてのユーザーにパスワードを持たないように強制することを提案していたわけではありません(私はそれで構いませんが)。しかし、パスキーユーザーであるあなたがパスワードを無効にできない場合、パスキーの目的ははるかに少なくなり、あなたは依然として完全にフィッシングの対象となります。

「いいね!」 1

Discourseでパスキーを選択した場合、パスワードはもう使用しません。では、どのようにフィッシングの対象となるのでしょうか?パスワードログインに対する悪意のある攻撃や総当たり攻撃のリスクは残ることは理解しており、ユーザーごとに無効にするというあなたの提案は有効ですが、フィッシングによるものではないのでしょうか?

「いいね!」 1

パスワードなしでパスキーのみを使用してアカウント作成をサポートする可能性について、何かアップデートはありますか? パスキーをサポートしていても、結局パスワードが必要になるのであれば、ほとんど意味がないように思えます。

「いいね!」 5

この機能を使用している人がいるかどうか、何人いるかを知ることは可能ですか?

通常のサイト設定で無効にできると良いのですが。

「いいね!」 1

このRailsコマンドで作成されたパスキーの数を確認できます。

UserSecurityKey.where(factor_type: 1).count
「いいね!」 1

ありがとうございます。初歩的な質問ですみませんが、以下のように入力するものでしょうか?

launcher enter app
rails c
「いいね!」 2

参照として、以下のコマンドを使用しました。

  • cd /var/discourse
  • ./launcher enter app./ を付けないと「launcher: command not found」と表示されたため)
  • rails c (しばらく待機)
  • SiteSetting.enable_passkeys = false
  • Control-D で Rails コンソールを終了
  • Exit でアプリを終了

最終結果として、パスキーを使用するオプションが予想通り消えました。ありがとうございました。

「いいね!」 1

パスキーを作成した人が一人いました。

UserSecurityKey.where(factor_type: 1)user_id を取得し、Data Explorer を使用してユーザー名を取得しました。

パスキーオプションを削除しても問題が発生しないように、何か行うべきことはありますか?

ユーザーはログアウトされますか、それともログアウト後にパスキーを使用してログインできなくなりますか?

ユーザーはすでに通常のパスワードを持っていますか、または少なくとも今すぐ生成できますか?

「いいね!」 1