Скрытие 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-коде, работающем на клиенте, — плохая идея.

Спасибо. Я настроил бэкенд-структуру для обработки запроса к API, но она не связана с моим экземпляром Discourse (вообще не подключена к Discourse). Есть ли способ реализовать это на бэкенде самого приложения Discourse?

Я предполагаю, что это зависит от того, как и где размещён ваш экземпляр Discourse. Можно ли как-то связаться с бэкендом для приложения, размещённого на discourse.org?

Вам необходимо создать его в Rails в виде плагина и находиться на тарифном плане, разрешающем добавление плагинов сторонних разработчиков.