Защита API REST, написанного на PHP, с помощью учетных данных клиента OAuth2

Я пишу REST API в PHP, используя Symfony2. Этот API предназначен для использования отдельными веб-сайтами для доступа к данным, и это будет выполняться библиотекой на стороне клиента.

Мне нужно защитить API, но это немного запутанно. Я провел некоторое исследование, и, насколько я могу судить, хорошим способом является использование OAuth2 с потоком учетных данных клиента (см. Проект RFC). Должен признаться, я все еще неясен в деталях, как именно это работает, но я продолжаю читать, что это так просто. Я полагаю, что мой первый вопрос: это путь или я пошел в неправильном направлении? Должен ли я использовать какой-либо другой метод аутентификации клиентов? Пожалуйста, имейте в виду, что мне нужна идентификация, аутентификация и авторизация.

Если да, OAuth2 с использованием учетных данных клиента - это способ, то я спрашиваю: какой лучший способ сделать это в PHP? Кто-нибудь на самом деле это сделал? До сих пор я пытался использовать oauth2-php вместе с bundle без лишней удачи. Этот пакет, похоже, сосредоточен на трехсторонней аутентификации, хотя я не совсем уверен. Мне было интересно, может ли лучший способ действий сделать это вручную с помощью пакета oauth2-php?

Я был бы очень признателен за любую информацию об этом. Спасибо заранее!

Ответ 1

Heidar,

В настоящее время я работаю над подобным проектом, и это то, что я нашел до сих пор.

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

Несмотря на то, что я не совсем уверен, что вы подразумеваете под частью Identity в своем заявлении, вам нужно "личность, аутентификация и авторизация".

Вы можете использовать Oauth для двух других, вычитаемый из того факта, что все крупные интернет-компании делают это (лучше всего я могу сделать для вас на этом фронте, Oauth docs говорит, что это только для авторизации).

Google предлагает клиентскую библиотеку, которая поддерживается достаточно хорошо: http://code.google.com/p/google-api-php-client/wiki/OAuth2

еще больше, для библиотеки на стороне сервера я бы перешел на oauth2-php, на что вы ссылаетесь, на https://github.com/quizlet/oauth2-php Но, пожалуйста, смотрите это post для более подробной информации: Существуют ли версии PHP или Java на стороне сервера OAuth 2?

и со стороны трехзначной аутентификации, пожалуйста, см. ответ здесь (он действительно обширный, но хорошо объясняет) OAuth 2.0: Преимущества и варианты использования - почему?

Пожалуйста, имейте в виду, что я все еще борется с реализацией этого.