Ограничение доступа к REST API

Я делаю серверную часть PHP для своего приложения, используя REST API.

Я хотел бы запретить другим скриптам доступ к моему API. Я думал об использовании $_SERVER['HTTP_REFERER'], чтобы избежать их. Но в какой ситуации HTTP_REFERER не работает?, говорит, что мы не можем полагаться на это.

Есть ли другой способ ограничить мой API только моим клиентом?


person Chakradar Raju    schedule 04.02.2012    source источник


Ответы (3)


Таким образом, вы можете реализовать базовую аутентификацию HTTP, как предложил Марчин. Или вы можете реализовать OAuth, как это предлагает HQarroum. Первый реализовать намного проще. Для HTTP BASIC запросы от вашего клиента выглядят так:

.. https://имя пользователя:пароль@yourbackend.host.com/resource/method/foo/bar ..

Реализовать базовую HTTP-аутентификацию очень просто. В Apache см. это. Для nginx см. это.

Что касается OAuth, это немного более сложная реализация. Если вы изучаете OAuth и вам не нужны разные области действия (уровни авторизации для доступа к разным уровням данных), вам следует реализовать двусторонний поток OAuth. Однако я считаю, что OAuth может быть излишним, если вы единственный потребитель защищенных ресурсов.

Я рекомендую использовать SSL (https) во всех случаях.

С уважением,
Нил
http://developer.mashery.com

person mansilladev    schedule 07.02.2012

Вы можете просто использовать обычную HTTP-аутентификацию пользователя/пароля.

person Marcin    schedule 04.02.2012

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

person Halim Qarroum    schedule 04.02.2012