Создание безопасных и надежных приложений

Хотя платформа для разработчиков Freshworks содержит множество функций, которые делают ненужным промежуточное программное обеспечение, существуют определенные ситуации, в которых невозможно избежать промежуточного программного обеспечения. Например, вы можете создавать приложение, которое интегрируется с продуктом, поддерживающим только OAuth 1.0. В этом сценарии требуется промежуточное программное обеспечение, которое будет действовать как посредник между нашей платформой и сторонним продуктом, чтобы включить аутентификацию и хранить токены доступа.

При использовании промежуточного программного обеспечения необходимо соблюдать осторожность, чтобы обеспечить его безопасность и масштабируемость. Во время обзора приложений мы сталкиваемся с множеством приложений, использующих незащищенное промежуточное ПО, которое принимает запросы без какой-либо формы аутентификации. Таким образом, промежуточное ПО становится уязвимым. Злонамеренная третья сторона может взаимодействовать с промежуточным программным обеспечением и наводнять его запросами (например, отказ в обслуживании). В этом случае приложение становится ненадежным, и это может испортить пользовательский интерфейс. Кто-то также может выдать себя за подлинного пользователя, что ставит под угрозу конфиденциальность и безопасность данных.

Один из самых простых способов защитить промежуточное программное обеспечение - использовать JWT. В этом посте мы поймем, как работает JWT, и рассмотрим, как его использовать.

Что такое JWT?

J SON W eb T oken (JWT) - это основанный на JSON отраслевой стандарт (RFC 7519) метод безопасного представления требований. между двумя сторонами.

JWT используется как средство аутентификации между системами. JWT - это текстовая строка, состоящая из трех частей - заголовка, полезной нагрузки и подписи, где подпись представляет собой хэш на основе секрета.

header.payload.<HASH>(header.payload, secret)

Токены обычно недолговечны для дополнительной безопасности и должны обновляться по истечении срока действия.

Использование JWT

Есть два способа использовать JWT в приложении:

  • Приложение отправляет идентификационные данные промежуточному программному обеспечению и возвращает JWT с соответствующими разрешениями. Затем приложение использует JWT в каждом запросе к промежуточному программному обеспечению, которое проверяет токен и передает запрос.
  • У приложения и промежуточного программного обеспечения есть общий секрет для создания и проверки JWT. Приложение генерирует токен и отправляет его в каждом запросе промежуточному программному обеспечению. По промежуточного слоя проверяет токен и отвечает на запрос.

Первый подход дает промежуточному программному обеспечению полный контроль над тем, к каким ресурсам может получить доступ токен, в то время как второй подход использует один токен для доступа ко всем ресурсам. Для промежуточного программного обеспечения, которому не требуется принудительно устанавливать определенные уровни разрешений для ресурсов, рекомендуется второй подход, поскольку его проще реализовать. Мы рассмотрим первый подход в одной из следующих статей. В этой статье мы подробно рассмотрим второй подход.

Примечание. Мы будем использовать библиотеку NPM jsonwebtoken для создания и проверки токенов.

Приложение - Создание токена

Ниже приводится простая функция, которая генерирует JWT с использованием секретного ключа. Затем токен используется в заголовках аутентификации для выполнения действительных запросов к промежуточному программному обеспечению.

В приложении Freshworks вы должны включить генерацию JWT в server.js, и эту бессерверную функцию можно будет вызывать во время любого события (настройка приложения, продукт, внешний) или из внешнего интерфейса с помощью Вызова серверного метода. Убедитесь, что пакет jsonwebtoken включен в раздел зависимостей файла manifest.json. Рекомендуется, чтобы токен не создавался во внешнем интерфейсе, поскольку это раскрыло бы секрет конечным пользователям.

Промежуточное ПО - проверка токена

Ниже приводится простая функция аутентификации в nodeJS для проверки JWT с использованием того же секретного ключа, что и приложение.

Если проверка JWT не прошла, промежуточное ПО отклоняет запрос. Следовательно, запросы, которые попадают в промежуточное ПО, аутентифицируются, чтобы избежать нарушений безопасности, даже, возможно, DDoS-атаки.

Ознакомьтесь с нашим Образцом приложения JWT, в котором реализована эта техника.

В Freshworks мы вкладываем много времени и энергии в обеспечение максимальной безопасности платформы и приложений для разработчиков. Когда вы используете промежуточное программное обеспечение, мы рекомендуем вам обеспечить правильную аутентификацию для защиты промежуточного программного обеспечения, а также беспроблемную и безопасную работу пользователя.

Если у вас есть вопросы или предложения, напишите нам по адресу [email protected].