Создайте действительную аутентификацию REST API - PullRequest
3 голосов
/ 01 августа 2010

Я создал веб-приложение и теперь хочу создать несколько API-интерфейсов REST, чтобы их могли программировать сторонние разработчики.Затем я хочу создать несколько клиентских библиотек на некоторых популярных языках (JavaScript, PHP, Ruby и т. Д.), Чтобы разработчикам было удобно пользоваться моим сервисом, чтобы они не анализировали вручную ответ JSON на каждый запрос.

IЯ никогда раньше не создавал инфраструктуру API, поэтому у меня следующий вопрос.Я хотел бы отслеживать использование методов API, вызываемых сторонними разработчиками.Каждый разработчик, прежде чем использовать API, должен быть зарегистрирован, и поэтому я хочу связать каждый запрос с зарегистрированным разработчиком (и так, установить определенные ограничения использования и т. Д.).

Я думал создать уникальный ключ API.для каждого разработчика, который он мог использовать во всех своих приложениях, для аутентификации запросов.Но потом я понял, что если он решит использовать мою оболочку javascript, то злоумышленники смогут просмотреть исходный код страницы клиентского приложения и получить его ключ API.Итак, я решил, что было бы лучше создать уникальный ключ API для каждого приложения, связанного с доменом, где будет размещаться клиентское приложение.Таким образом, даже если пользователь захватит чужой ключ, он окажется бесполезным за пределами домена, где он был первоначально зарегистрирован.Но потом я подумал: а мобильные приложения?Что произойдет, если звонок будет сделан не с сайта?Как я могу аутентифицировать ключ через его домен, если домена нет или IP-адрес не является статическим?

Есть какие-нибудь советы?

Спасибо!

1 Ответ

1 голос
/ 26 октября 2010

Marco.Не уверен, что вы все еще работаете над этим, но на всякий случай: если вашей главной целью является отслеживание использования API с разных сайтов, вы вправе назначить уникальный ключ API для каждого разработчика.Однако в случае JavaScript запрос не будет поступать от этого разработчика;он будет исходить от компьютера конечного пользователя (при условии, что вы используете JSONP для обхода политики того же домена в JavaScript).Возможно, вы сможете применить ограничение вашего домена с помощью HTTP_REFERER (т.е. вы получите запрос от 1.2.3.4.comcast.net, но его HTTP_REFERER - www.developer.com), но очевидно, что злонамеренный пользователь может подделать этот РЕФЕР.*

Другой вариант может заключаться в том, чтобы избежать JSONP и заставить библиотеку JavaScript поставляться с локальным прокси.Таким образом, вызовы AJAX будут передаваться из браузера пользователя на сервер разработчика (проверяется с помощью cookie / крошки сеанса), а затем сервер разработчика связывается с вашим сервером (который может быть легко ограничен по IP и / или использовать строгую аутентификацию).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...