これはサーバー上でホストされている Web アプリケーションです。問題点は、秘密鍵が漏洩した場合、何らかの形でペイロードが傍受される可能性があることです。JavaScript 暗号化全般に共通する懸念であることは理解していますが、Discourse から Web アプリを認証する際により安全な手法があるかどうかを確認したいと考えています。
これは Vue.js ベースの Web アプリケーションで、独自のサーバーサイドコンポーネントは持たず、スタンドアロンの Web アプリケーションとして Discourse API を利用しています。つまり、ある意味では Discourse 自体がサーバーとして機能しています。使用例としては、ユーザーアカウント名下の Discourse トピックにコンテンツを投稿するスタンドアロンのアンケートやフォームなどが挙げられます。このようなソフトウェアをカスタムのサーバーサイドコンポーネントなしに構築できるという点で、このアーキテクチャは魅力的でした。そのため、可能な限り「サーバーサイド」の処理は避けたいと考えています。
現在、User-API キーの取得は意図通り機能していますが、@owengot が JavaScript 上で秘密鍵を生成するステップに非常に時間がかかる(最大10秒かかるなど、JavaScript では非効率的である)ことを発見しました。その後、同じ秘密鍵を複数のユーザーで共有できるというハックを発見し、それを Web ホスト上のファイルに保存しました。このホストは Web アプリケーションの他の静的ファイル(JS、CSS など)も提供しています。これにより高速化されましたが、その秘密鍵は(1)共有されたものとなり、(2)公開 URL でアクセス可能な状態で保存されることになりました。これは、ええと、恐ろしいことのように思えます