2013-08-02 2 views
0

В настоящее время я разрабатываю API для phpBB как часть проекта Google Summer of Code. Точка API - это позволить разработчикам создавать приложения, которые подключаются к платам phpBB.OAuth для API, используемого несколькими службами

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

Я уже сделал свою собственную реализацию, но люди, с которыми я говорил, говорят, что я должен использовать OAuth. Я читал об OAuth уже неделю, но я не совсем уверен, как его следует использовать в этом случае. То, что я собираю из трехногих OAuth, заключается в том, что разработчик приложения должен зарегистрировать свое приложение на службе, чтобы получить токен потребителя, прежде чем получить токен клиента. Это не реально, потому что разработчик не может зарегистрировать свое приложение на всех платах phpBB.

Я думал о том, будет ли приложение автоматически извлекать потребительский токен с сервера, а затем токен клиента, но для меня это звучит так, как будто он побеждает точку с тремя ногами OAuth.

Я читал немного о двухобых OAuth, но из того, что я собираюсь, вы не должны использовать это как аутентификацию и больше для внутренних приложений?

Система аутентификации Я реализовал до сих пор, как это:

  1. Application запрашивает аутентификацию токенов и маркер подписи с доски PHPBB
  2. пользователю предлагается посетить страницу проверки подлинности на Плата phpBB с токенами в качестве параметров
  3. Приложение проверяет с помощью платы phpBB, если токены действительны, пользователь должен был бы сообщить об этом программе после прохождения фазы аутентификации в браузере.
  4. Whe n делая запрос, скажем /api/forums/2/topics, приложение добавит токен аутентификации и последовательный запрос: /api/forums/2/topics?auth_token=token&serial=2, где серийный номер постоянно увеличивается, чтобы остановить атаки повтора. Затем приложение хэширует запрос с использованием HMAC-SHA256 и добавляет его к запросу в качестве другого параметра GET. Сервер делает то же самое хеширование, чтобы узнать, правильно ли оно. Таким образом, злоумышленники не могут подделывать запросы, если они не получили свою руку от подписывающего токена при первоначальном обмене.

Я пытаюсь выяснить, лучше ли я попытаться реализовать OAuth вместо этого, пытаясь узнать об OAuth. Короче: как OAuth работает, охватывая несколько сервисов, не имея регистра разработчика для каждой службы?

ответ

1

Если централизованное обслуживание отсутствует, OAuth, вероятно, не является правильным выбором. Даже если вы позволили разработчикам динамически создавать запись приложения для данного экземпляра, им все равно нужно будет сначала зарегистрироваться на каждом из них, чтобы вы знали, кто также может связать приложение OAuth.

Возможно, что-то вроде HTTP Signatures подойдет вашим потребностям лучше?

+0

Я думал о центральном репо, но это, скорее всего, не сработает, поскольку это официальная функция, и я уверен, что phpBB действительно не имеет ресурсов для запуска чего-то подобного. О HTTP-подписях, я подробно рассмотрю его. Хотя он упоминает, что вы должны использовать его по HTTPS, что обычно не работает, поскольку я не думаю, что у многих плат phpBB есть HTTPS.Вы по-прежнему считаете, что HTTP-подписи будут лучше и безопаснее, чем у меня в настоящее время? – galaxyAbstractor

Смежные вопросы