2013-03-25 7 views
1

Я создаю одностраничное приложение и REST API для обработки запросов от клиента и любого возможного стороннего клиента.Api Первое и одностраничное приложение

Моя идея заключается в том, чтобы создать три сервера:

  • A - API, основанный OAuth
  • B - Статический с HTML/CSS/JS файлов + Partials/просмотров
  • С - веб-сервер (узел или питон или что-то еще), который обрабатывает логин

Возможно, четвертый сеанс обработки с Redis или чем-либо еще.

Я хочу, чтобы СПА зарегистрировал пользователя и/или зарегистрировался на сервере C, предоставил ему токен доступа и дал ему возможность напрямую поговорить с API (A).

Мой вопрос в том, что является правильным механизмом для этого?

  • Чтобы установить кук сессии, с доступом лексемы внутри, к главному клиенту приложения (SPA), так что он может говорить с REST API, пока сеанс живет
  • Чтобы избежать создания сервера C и обработку аутентификации на сервере а, (как насчет услуг сторонних тогда?)
  • Все остальное

Мой вопрос немного грязный, поэтому не стесняйтесь спрашивать меня для получения более подробной информации.

+0

Я задал подобный вопрос некоторое время назад, но не получил много отзывов: http://stackoverflow.com/questions/15362639/how-to-do-authentication-with-a-single-page-app-and -api-backend - я бы предложил начать просто (r), однако ... – poseid

+0

Да, я уже видел этот вопрос и многие другие, но, к сожалению, это не звучало достаточно ясно для меня. Что вы подразумеваете под «simple (r)»? – Asdine

+0

Оставьте OAuth для начала ... возможно, вы можете использовать только подписанные запросы? – poseid

ответ

0

Что вы в основном описываете, это система «билетов», только вы называете билет «токеном». Эта проблема рассматривалась по-разному с различными стандартизованными протоколами в течение ряда лет. Очень популярным и открытым стандартом, разработанным в Массачусетском технологическом институте, является Kerberos.

Если возможно, я настоятельно рекомендую использовать существующий протокол и существующую реализацию. Попытка «сворачивать свою собственную» безопасность очень, очень сложна и обычно приводит к уязвимому приложению. Подумайте о язвах, которые затмевали Microsoft на протяжении многих лет, по сравнению с относительно надежной репутацией систем * nix :-)

Моим первым подходом было бы принять Kerberos или другой аналогичный протокол. Если вы мертвы, когда будете катиться самостоятельно, тогда чем проще, тем лучше. Я бы пошел с чем-то вроде вашего второго решения и сервера скрапа C. Слишком много места для ошибки, когда другой сервер выполняет аутентификацию.

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

+1

Я не обязательно хочу настроить систему продажи билетов, но хороший способ справиться с аутентификацией для моей системы. Я только что открыл мир одностраничных приложений, и мне интересно, как бороться с безопасностью и auth. Спасибо за ваш ответ btw :) – Asdine

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