Как сделать так, чтобы мой API был доступен только через мое приложение (Javascript и PHP)?

В настоящее время я создаю свой первый API. Я знаю, как настроить все конечные точки и делать с ними то, что я хочу. У меня проблема в том, что я не хочу, чтобы кто-нибудь мог посетить site.com/api/example и получить данные от него. Какие методы / концепции доступны, чтобы убедиться, что только мое приложение может получить доступ к API. Я хочу использовать POST и GET для этих конечных точек, используя Javascript и PHP.

Любая помощь по этому вопросу будет принята с благодарностью, спасибо!

1

Решение

У вас есть два основных решения:

  1. Аутентификация приложения: ваше приложение будет отвечать за обработку аутентификации вашего пользователя и предоставит серверу подтверждение успешной аутентификации. Реализация будет варьироваться в зависимости от того, выполняется ли аутентификация непосредственно на сервере (путем предоставления учетных данных) или косвенно (после этого серверу будет предоставлен токен аутентификации). Некоторые ключевые слова: oAuth, JWT, LDAP

  2. Сертификат TLS на стороне клиента: сервер запросит у вашего приложения представить сертификат TLS для настройки туннеля TLS.

1

Другие решения

Вот два варианта:

  1. Не позволяйте никому знать, что вы используете API. Вызывайте API только со стороны сервера, пусть API только слушает запросы с IP вашего сервера. Direct Javascript API вызывает ваш сервер, который перенаправляет их в API и отправляет (возможно, даже отфильтрованный) объект ответа API на сторону клиента.

  2. Аутентификация API в сочетании с ACL (Access Control List). Используйте oAuth или JWT для генерации токена доступа, который вы отправляете при каждом запросе. Через ACL вы можете изменять вывод, в зависимости от того, какой пользователь делает запрос. Возможно, на запросы Javascript отвечают ограниченные общедоступные данные, в то время как ответы на ваши запросы на стороне сервера могут содержать данные, которые вам могут понадобиться для обработки, но не хотите делиться ими публично.

Лично я использую комбинацию обоих. Аутентификация JWT и никогда не позволяющая Javascript отправлять запросы напрямую, я всегда проверяю эти стороны сервера, прежде чем пересылать их в API (если ответ еще не кэшируется на сервере).

-1

По вопросам рекламы [email protected]