パスワードレスの代替手段への認証切り替え

この投稿は、実際には存在しないが私が実装したい機能についての内容です。現時点では、どれほどの作業量になるか見当もつかず、この質問の目的は必要な要件を把握することにあります。

いくつかの背景情報として、私たちはパスワードレス認証ソリューションに取り組んでいます。https://trykno.com/ このソリューションはサービスとして機能し、サービスを利用するサイトオーナーは、メールの安全な送信や、機密情報・個人識別情報の保存を自分で処理する必要はありません。

プロジェクトのためにフォーラムを設けることができ、Discourse を利用したいと考えています。
ただし、認証システムを Kno に置き換える必要があります。

質問です。

  • Discourse の認証システムはプラグイン可能でしょうか?
  • ユーザーにメールアドレスがあるという仮定がハードコードされている箇所はありますか?
  • フロントエンドのフレームワークは何ですか?(gemfile には ember-rails が見えますが、package.json には ember の参照がありません)

もしこれらの質問が初歩的であれば申し訳ありません。私は Ruby 開発者ではないため、問題解決への手がかりは何でも貴重です。ありがとうございます

「Discourse」のことだと思われますが :stuck_out_tongue: はい、プラグイン可能です。認証プラグインを開発するか、ネイティブ SSO システムを使用できます。

はい、Discourse ではすべてのユーザーにメールアドレスが必要です。無効なメールアドレス(.invalid で終わるものなど)を指定することも可能ですが、推奨はしません。

Ember です。ただし、認証プラグインの場合、フロントエンドを触る必要はほとんどないでしょう。

「いいね!」 6

ああ、恥ずかしいですね。更新します。

Kno を使用する際にユーザーのメールアドレスを知る必要がないという機能ですが、必要に応じて取得することもできます。

「いいね!」 2

現在は、パスワードを使用せず、リンクを送信するだけでログインすることが可能です。

もし、kno の開発が目的であれば、OAuth サーバーとして開発することをお勧めします。これにより、SSO 以外の認証ソースとしても利用できるようになります。詳細は Discourse OAuth2 Basic をご覧ください。

「いいね!」 2

リンクが送信される可能性はありますが、kno はそれ以上に、メールのワンタイム認証完了後に WebAuthn を通じたデバイス認証などの機能を提供しています。

OAuth サーバーとして開発しても、私たちが求める要件を満たすことは残念ながらできません(その理由を FAQ に記載すべきかもしれませんが、要するに、kno では異なるデバイスを使って 1 つのデバイスで認証できる点にあります)。

さらに詳しく検討した結果、Discord 固有の SSO ソリューションを実装することで、実用的な最初のバージョンを作成できるようです。

「いいね!」 1

1 つの OAuth プロバイダーのみを使用し、他のすべての認証方法を無効化することは可能でしょうか?

その場合、ログインをクリックすると自動的に認証フローが開始され、ログインモーダルを開いてユーザーにプロバイダーを選択させる必要がないとよいのですが。

それに対処できるかもしれません。

しかし、わざわざやる必要はありません。ログイン済みのユーザーは、そのダイアログをほとんど見ないからです。

時間をより生産的に他の問題の解決に費やす方が良いでしょう。

試されましたか?Discourse は、もともとそのような動作を数年間サポートしています :wink:

「いいね!」 3

まあ、これは素晴らしいですね。
いいえ、まだ試していません。私のサービス用のOAuthプロバイダーを実装していないからです。その後、新しいOAuthプロバイダーになるため、プラグインを作成する必要があると思います。
SSO統合はほぼ完了したので、OAuthへの切り替えには最適なタイミングだと思います :smiley:

「いいね!」 1