Ключи API против HTTP-аутентификации против OAuth в RESTful API

86

Я работаю над созданием RESTful API для одного из приложений, которые я поддерживаю. В настоящее время мы планируем создавать в нем различные вещи, которые требуют более контролируемого доступа и безопасности. Изучая способы обеспечения API, я нашел несколько разных мнений о том, какую форму использовать. Я видел, как некоторые ресурсы говорят, что HTTP-Auth - это путь, в то время как другие предпочитают ключи API, и даже другие (включая вопросы, которые я нашел здесь на SO) клянутся OAuth.

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

Итак, мой вопрос заключается в том, что - если все это сделать через HTTPS, каковы некоторые из практических различий между этими тремя? Когда следует относиться к другим?

  • 0
    с чем вы в итоге поехали?
  • 0
    @ Ирвин - я задал этот вопрос довольно давно и с тех пор перешел от проекта, требующего его, но в итоге я использовал комбинацию ключей API и сгенерированного пароля (который пользователи никогда не видят), которые отправляются с использованием HTTP-аутентификации.
Теги:
security
restful-authentication

1 ответ

59

Это зависит от ваших потребностей. Вам нужно:

  • Identity - кто утверждает, что делает запрос API?
  • Аутентификация - действительно ли они говорят, что они?
  • Авторизация - разрешено ли им делать то, что они пытаются сделать?

или все три?

Если вам просто нужно идентифицировать вызывающего абонента для отслеживания объема или количества вызовов API, используйте простой ключ API. Имейте в виду, что если пользователь, которому вы выдали ключ API, делится им с кем-то другим, он также сможет вызвать ваш API.

Но если вам нужна авторизация, то вам нужно предоставить доступ только определенным ресурсам на основе вызывающего API, а затем использовать oAuth.

Вот хорошее описание: http://www.srimax.com/index.php/do-you-need-api-keys-api-identity-vs-authorization/

  • 0
    Я уже придумал решение этого вопроса, но в этом случае мне понадобились все три.
  • 0
    Эта ссылка была действительно полезной. ура!
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню