Как вы управляете API-ключами - PullRequest
2 голосов
/ 01 января 2009

Я смотрю на создание API и обдумывал возможность управления доступом к API, но я занимаюсь скорее системой b2b, позволяющей предприятиям получать доступ к данным для включения в их сайты. У меня не будет никакого b2c в начале.

Так что oauth не кажется мне подходящим инструментом, я искал источники относительно построения системы на основе ключей, но ничего не нашел.

Что-то уже доступно? Лучше всего просто создать хэш данных, предоставленных пользователем, или что-то в этом роде?

Ответы [ 5 ]

2 голосов
/ 01 января 2009

Вам нужно только то, что уникально идентифицирует пользователя ... Просто используйте UUID или, возможно, хеш UUID.

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

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

Общий подход, предлагаемый здесь (использовать хеш, который включает в себя ключ API и текущее время), все хорош - безусловно, лучше, чем включать в сообщение "пароль".

Тем не менее, существует крипто-стандартный способ выполнения этой операции "mung", называемый HMAC. На это стоит обратить внимание, если вы хотите что-то более стандартное / надежное / безопасное.

Наконец, существует очевидный «золотой стандарт» в параметрах безопасности - используйте цифровой сертификат для подписи либо всех запросов (может быть вычислительно дорогостоящим), либо используйте для подписи первоначальный запрос, который затем генерирует ключ сеанса с ограниченным использованием (например, один API только с истечением через 60 минут).

В качестве альтернативы вы можете использовать двусторонний SSL для транспортного уровня и просто доверять этому в приложении / API.

На самом деле все зависит от того, насколько вы этого хотите ...:]

1 голос
/ 11 марта 2009

В зависимости от требований, в мире веб-API предоставление вашим партнерам / разработчикам ключа API (идентификация) и требование подписать вызовы (аутентификация) является довольно стандартным. Есть много способов спецификации подписей. Довольно распространенный в наши дни; возьмите все параметры вызова, временную метку (покачивание +/- 5 минут), общий секрет и хэшируйте его, используя SHA-1 или MD5 (лучше SHA-1).

Вы можете реализовать это самостоятельно или найти партнера (есть несколько), который сделает это за вас.

1 голос
/ 01 января 2009

Взгляните практически на любой сайт / сервис Web 2.0. Все они имеют разную степень аутентификации и управления ключами API. Flickr, Twitter, Github и т. Д.

0 голосов
/ 01 января 2009

Я бы не просто использовал данные, предоставленные пользователем, поскольку это может создать ситуацию, когда ключи API являются предположительными. Обычно я беру некоторые данные, сгенерированные пользователем, а затем объединяю их с некоторыми данными, которые относительно уникальны (например, текущее системное время), и хэширую их, используя SHA-1 или что-то еще, возможно, меняю представление, если я не хотите, чтобы он был хешем SHA-1, а затем используйте его в качестве ключа.

...