Rails: аутентификация токена с нуля

У меня есть приложение для рельсов, с которым я хочу начать интеграцию iOS. У меня есть базовая система аутентификации, построенная в основном с нуля с небольшой помощью Sorcery.

В моем понимании есть два варианта для мобильной интеграции: HTTP Basic Auth или Token Auth. Из того, что мне удалось найти до сих пор, похоже, что предпочтительным методом является Token Authentication.

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

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

Спасибо!

Ответ 1

У разработчика и Authlogic есть хорошее решение аутентификации Token. Вы можете использовать один из этих драгоценных камней или реализовать свою собственную проверку своего исходного кода для вдохновения.

Ниже мое понимание того, как работает аутентификация маркера:

  • Пользователь подписывается с использованием комбинации имени пользователя и пароля с помощью отправить запрос.
  • Вы аутентифицируете пользователя и генерируете уникальный токен и сохраните его в db.
  • Вы отправляете этот токен обратно на устройство iOS.
  • Устройство сохраняет этот токен в памяти.
  • Любой последующий вызов api требует, чтобы этот токен передавался как дополнительный параметр для пользователя.
  • Чтобы этот процесс был безопасным, этот токен должен иметь истечение дата и связь между устройством iOS и сервером должен быть зашифрован через SSL.
  • Для удобства вы можете сохранить учетные данные пользователя на устройстве используя keychain iOS.

Надеюсь, это поможет.

Ответ 2

Я думаю, что здесь есть три трудности.

  • Существует очень мало книг, посвященных методу аутентификации.
  • Ключевое слово "аутентификация токена" сбивает с толку использование в поле "безопасность/аутентификация".
  • Документация, связанная с Rails, как правило, "как сделать".

Итак, Googling не покажет хорошие ресурсы для этой цели. Я знаю это поле хорошо, но это сложно, особенно по причине 2.

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

Позвольте мне указать несколько указателей на книги по методам аутентификации и некоторые документы здесь.

Надеюсь, что это поможет.

Ответ 3

ember-auth имеет хороший учебник по аутентификации токенов для рельсов с помощью deves и ember. Однако он также может применяться к колдовству или к пользовательской системе аутентификации. Я думаю, что это лучший подход к аутентификации для приложения ember.js.

https://github.com/heartsentwined/ember-auth-rails-demo