2013-11-15 2 views
1

Я использую Apigee в качестве прокси для частного REST API, который позволяет выполнять основные операции CRUD в моей базе данных. Разработчик переднего плана хочет вызвать мой API напрямую из JavaScript/Ajax, поэтому я не могу использовать базовую аутентификацию API-ключа, потому что любой может просмотреть источник JS и вызвать потенциально разрушительные методы в моем API (я не в сети политики в браузерах, но это не помешает кому-то делать завиток и вызывать мой API за пределами браузера).Как защитить API, который используется в клиенте JavaScript/Ajax [apigee]?

Каков наилучший подход? Может ли пользователь UI каким-то образом использовать OAUTH для получения токена доступа для каждого сеанса после аутентификации пользователя и использования его в своих вызовах Ajax? Но даже тогда, не мог ли этот пользователь просмотреть источник JS и сделать что-то противное через завиток?

Заранее благодарен!

+0

Все, что может сделать браузер, пользователь может также сделать. – SLaks

ответ

0

Таким образом, вы хотите разрешить посетителю ваш сторонний сайт и убедиться, что они не могут совершать какие-либо оскорбительные действия?

Для этого нет модели безопасности. Когда вы авторизуете пользователя/сеанса/браузера, это бесплатная игра, он может делать все, что захочет.


Так что сделайте шаг назад здесь, какое злоупотребление вы хотите предотвратить? Возможно, вы хотите, чтобы неизвестные третьи стороны не использовали ваш сервис. В этом случае вы можете настроить аутентификацию ключа API под водой, что дает вам временный ключ сеанса.

Есть 3 стороны. Пользователь (u), сторонний (3), который использует ваш API, и вы (y).

  • u запрашивает ключ сеанса от 3
  • 3 делает подводный запрос y с его API ключа
  • y проверяет ключ API и отправляет обратно ключ сеанса 3
  • 3 руками сессии ключ к u
  • u делает запрос на обслуживание y

Если 3 никогда не может получить ключ сеанса, ваша услуга безопасна для неизвестных третьих лиц.

1

OAuth v2 должен решить вашу проблему. На веб-сайте Apigee есть несколько статей и ресурсов, в которых обсуждается, когда лучше использовать OAuth v1 vs. OAuth v2. http://apigee.com/docs/content/apigee-oauth-frequently-asked-questions, трехглавая стратегия OAuth может работать лучше всего для вас: http://apigee.com/docs/gateway-services/content/oauth. Это пример этого на веб-сайте Apigee.

+0

Мой API не такой API, как Facebook, где ресурсы запрашиваются от имени конечного пользователя. Это больше похоже на удаленный доступ к данным с помощью CRUD-операций как для моей модели продукта, так и для модели клиента. Одна операция может заключаться в получении некоторых справочных данных из базы данных, которые не имели бы никакого отношения к клиенту. Учитывая, что по-прежнему можно обеспечить доступ к этим службам коду Ajax или я должен попросить разработчика создать слой между Ajax и моим API, чтобы ключ API не мог быть получен из источника страницы? – user2997003

Смежные вопросы