Защита API: базовая аутентификация SSL и HTTP против подписи

При разработке API для нашего веб-приложения мы будем использовать их поддомен в качестве «имени пользователя» и сгенерировать ключ API / общий секрет. Во-первых, можно ли использовать поддомен в качестве имени пользователя? Я не вижу преимущества создания еще одного ключа.

Различные API-интерфейсы, похоже, выполняют одно из двух:

  1. Использование базовой аутентификации HTTP с SSL

В каждом запросе имя пользователя устанавливается на субдомен и пароль к ключу API. Поскольку мы используем SSL, это должно быть защищено от подделки.

Известные API: Google Checkout , Freshbooks , GitHub , Zendesk

  1. Создание подписи запроса с использованием общего секрета

Обычно достигается путем упорядочивания пар ключ / значение и использования HMAC-SHA1 с общим секретом для генерации подписи. Затем подпись отправляется вместе с запросом и проверяется на другом конце.

Известные API: Google Checkout , Amazon AWS

PS: это не ошибка, Google Checkout поддерживает оба

] Редактировать: Просто прочтите, что OAuth 2 отбрасывает подписи в пользу отправки имени пользователя и пароля через SSL.

Любые мнения о том, что выбрать: SSL против подписи?

64
задан Annika Backstrom 15 October 2011 в 03:48
поделиться