2013-10-08 3 views
0

У меня есть приложение Rails, которое вызывает несколько пользовательских вызовов стороннего API. Они взаимодействуют с большим количеством данных в ходе заполнения опроса, и их прогресс сохраняется в HTML5 localStorage до тех пор, пока они не дойдут до конца опроса, и данные будут сохранены в локальной базе данных. & localStorage очищен.Как аутентифицировать приложение Rails с использованием токена от стороннего API?

Для вызовов API требуется маркер, прикрепленный к концу в качестве параметра «auth =». Прямо сейчас у меня есть пользователь, который входит в мое приложение со своим именем пользователя и паролем к этой службе, POST эти учетные данные для вызова «сессий» этого API и возвращает токен в JSON. Я сохраняю этот токен в переменной в контроллере и использую его для выполнения последовательных вызовов API и представления данных пользователя в моем приложении и т. Д. И т. Д.

Я узнал немного о Rails, но рядом с ничего о сеансах или аутентификации. Вообще говоря, есть ли что-то еще, что мне нужно сделать для того, чтобы это было безопасным сценарием? Я чувствую, что что-то упускаю.

+1

При условии, что я правильно понял, я думаю, что все в порядке. Одно дело - обеспечить использование HTTPS в рабочей среде. Можно посмотреть на метод Rails 3.1 force_ssl, который делает его довольно простым. В моей работе мы получаем токен доступа из facebook, когда пользователь вступил в систему, и сохраняем этот токен в сеансе. Затем мы отправим запросы на api facebook. Мое другое беспокойство может заключаться в хранении личной информации в локальном хранилище, а также в ее зашифровке в вашей базе данных, но локальное хранилище может быть прекрасным, я просто не знаком с тем, как это работает с точки зрения безопасности. – agmcleod

+0

Хороший вопрос о localStorage. (Я не собираюсь хранить там токен, а данные, которые там хранятся, не являются чем-то вроде «маркеров прогресса» для опроса, который пользователь выполняет.) – Gregir

+0

Ah okay. Я не был уверен, сохраняете ли вы поля ввода, которые могут содержать личную информацию или что-то в этом роде, я думаю, что тогда вы хороши в этом отношении. Localstorage для состояния - отличная утилита. – agmcleod

ответ

1

Предполагая, что комбинация имени пользователя и пароля пользователя для стороннего сервиса не попадет на ваши серверы, мне кажется, что все в порядке.

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

Сохранение прогресса в localstorage звучит отлично. Чтобы сохранить значения, которые вы можете иметь страницы формы быть вкладки (так скрыть прежнюю форму, а не новая страница) и использование:

autocomplete="on" 

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

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