Я работаю над созданием RESTful API для одного из приложений, которые я поддерживаю. В настоящее время мы планируем создавать в нем различные вещи, которые требуют более контролируемого доступа и безопасности. Изучая способы обеспечения API, я нашел несколько разных мнений о том, какую форму использовать. Я видел, как некоторые ресурсы говорят, что HTTP-Auth - это путь, в то время как другие предпочитают ключи API, и даже другие (включая вопросы, которые я нашел здесь на SO) клянутся OAuth.
Тогда, конечно, те, которые предпочитают, скажем, ключи API, говорят, что OAuth предназначен для приложений, получающих доступ от имени пользователя (как я понимаю, например, для входа на сайт, не принадлежащий Facebook, используя ваш Facebook), а не для пользователя, напрямую обращающегося к ресурсам на сайте, на котором они специально подписались (например, официальный клиент Twitter, обращающийся к серверам Twitter). Однако рекомендации для OAuth, по-видимому, даже для самых основных потребностей в проверке подлинности.
Итак, мой вопрос заключается в том, что - если все это сделать через HTTPS, каковы некоторые из практических различий между этими тремя? Когда следует относиться к другим?
Это зависит от ваших потребностей. Вам нужно:
или все три?
Если вам просто нужно идентифицировать вызывающего абонента для отслеживания объема или количества вызовов API, используйте простой ключ API. Имейте в виду, что если пользователь, которому вы выдали ключ API, делится им с кем-то другим, он также сможет вызвать ваш API.
Но если вам нужна авторизация, то вам нужно предоставить доступ только определенным ресурсам на основе вызывающего API, а затем использовать oAuth.
Вот хорошее описание: http://www.srimax.com/index.php/do-you-need-api-keys-api-identity-vs-authorization/