Реализация OAuth для API Symfony

1

Я немного не уверен в реализации OAuth для API, основанного на Symfony.

Ситуация: API на Symfony с использованием общих пакетов FOS, как указано здесь. Передняя часть будет на SilverStripe, поэтому форма входа в систему будет находиться в другом домене на платформе SilverStripe.

Это необходимый рабочий процесс. Пользователь заполняет имя пользователя и пароль в форме на лицевой стороне при вызове SilverStripe → API, чтобы проверить правильность имени пользователя и пароля → если учетные данные верны, API дает access_token и все другие значения, необходимые для последующих вызовов API (который я не уверен)

Все обучающие программы, которые я нашел, реализуют oauth для Facebook или Twitter.

Не совсем уверен, как это сделать, поскольку я новичок в API.

  • 0
    Таким образом, SilverStripe использует ваш API, встроенный в Symfony, живет где-то еще, правильно? И вам нужна форма входа SilverStripe, чтобы функционировать как переход к API? Нужно ли фактически регистрировать пользователя в Silverstripe или проходить аутентификацию только с помощью API?
  • 0
    @MarkGuinn правильно Symfony живет где-то еще, а форма для входа в Silverstripe просто для аутентификации с помощью API
Показать ещё 1 комментарий
Теги:
oauth
silverstripe

1 ответ

1
Лучший ответ

Предполагая, что:

  1. Вам необходимо собрать UN/PW на Silverstripe и использовать те же самые для аутентификации с помощью API
  2. Вам не нужно иметь запись участника SilverStripe для того же пользователя (т.е. Вы полностью обходите аутентификацию SS)

Я предлагаю:

  1. Создайте форму аутентификации точно так же, как любая другая форма SS.
  2. В обработчике отправки используйте curl или что-то еще, чтобы отправить request_type = запрос пароля в API (ala https://gist.github.com/lologhi/7b6e475a2c03df48bcdd#grant_typepassword)
  3. Сохраните access_token в сеансе
  4. Использовать токен доступа для будущих запросов API
  5. Чтобы выйти из системы, просто удалите токен доступа из сеанса
  6. Чтобы проверить, не вошли ли в систему, проверьте, есть ли токен доступа в сеансе.

Никаких внешних модулей не требуется, если мои предположения верны. Если нет, вы можете проверить OPauth и https://github.com/BetterBrief/silverstripe-opauth - по крайней мере, как вдохновение.

  • 0
    Спасибо Марк. Попробовал это, и, кажется, работает нормально. Вопрос - Для чего нужен маршрут / oauth / v2 / auth? Нужно ли использовать это?
  • 0
    Это на стороне Symfony? Боюсь, у меня нет особого опыта работы с этим набором модулей. Спецификация oauth имеет несколько протоколов туда и обратно (например, обновление токенов, вход на стороне Symfony, например, на Facebook или GitHub и т. Д.), Поэтому я предполагаю, что она облегчает один или все из них.

Ещё вопросы

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