API キーの非表示化

JSON API をさまざまなポイントで呼び出したいと考えています。場合によっては API キーを提供する必要があります。そのため、管理ダッシュボードでキーを生成し、API 呼び出しに含める必要があります。例えば:

var token = [API KEY]
$.ajax({
     url: 'https://myforum.com/groups/[groupname].json',
      contentType: "application/json",
      headers: {
          "Api-Key": token,
          "Api-Username": "[username]"
        },
        dataType: 'json',
        success: function(result){
             console.log('result = ' + result);
         }
})

このキーをユーザーに見られないように保護する方法はありますか?

現在の解決策は、この関数を Discourse アプリの外で実行することです。つまり、私のアプリは別の場所に配置されたエンドポイントを呼び出し、そのエンドポイントがこの関数を呼び出すようにしています。これにより、API キーは Discourse アプリとは別に保存された関数内にあり、私のアプリはエンドポイントしか知りません。

しかし、この関数をテーマやプラグインなど、Discourse アプリ内に含めることができれば、よりクリーンになるでしょう。しかし、コードの一部である以上、ユーザーが API キーを閲覧できてしまうのは避けられないように思えます。

API キーを隠す方法はありますか?

機密性の高い API リクエストを行うアプリは、フロントエンドではなくバックエンドで実行することをお勧めします。

カスタムキャッシュ、並列 API 呼び出し、セキュリティ向上など、多くのメリットが得られます。クライアントで実行される JS コードでこれを行うのは適切ではありません。

「いいね!」 4

ありがとうございます。API リクエストを処理するバックエンド構造をセットアップしましたが、これは Discourse インスタンスとは完全に分離されています(Discourse とは一切接続されていません)。これを Discourse アプリ自体のバックエンドで実行することは可能でしょうか?

これは、Discourse インスタンスのホスティング方法や場所によって異なると思われます。discourse.org でホストされているアプリのバックエンドにリンクする方法はあるでしょうか?

Rails のプラグインとして作成し、サードパーティ製プラグインの追加を許可するプランに加入している必要があります。

「いいね!」 2