У меня есть приложение для рубинов на рейках, развернутое в крутящий момент. Мне нужно каким-то образом защитить websockets в моем приложении. Я использую stomp websockets, есть ли способ аутентифицировать пользователей, пока они делают соединение с веб-соединением? Я мог бы использовать параметры имени пользователя и пароля, но в настоящее время они игнорируются. Есть ли другой способ аутентификации этого соединения? Благодаря!Аутентификация клиентов стоп-стоп-серверов
ответ
Вы можете аутентифицировать сообщение в Stomplet, используя сеанс и сохраненный токен. Для этого вам нужно настроить Rails для использования хранилища сеансов Torquebox. Это может быть сделано с помощью инициализатора, например config/initializers/torquebox_init.rb
:
AppName::Application.config.session_store :torquebox_store
Теперь Stomplet будет иметь доступ к сессии. Вот пример Stomplet, который использует параметр сеанса :authentication_token
, чтобы соответствовать идентификатору пользователя_таблицы пользователя в базе данных. Маркер аутентификации проверяется на наличие подписки, отправив сообщение, и отпиской:
require 'torquebox-stomp'
class StompletDemo
def initialize()
super
@subscribers = []
end
def configure(stomplet_config)
end
def on_message(stomp_message, session)
token = session[:authentication_token]
if is_authenticated?(token)
@subscribers.each do |subscriber|
subscriber.send(stomp_message)
end
end
end
def on_subscribe(subscriber)
session = subscriber.session
if is_authenticated?(session[:authentication_token])
@subscribers << subscriber
end
end
def on_unsubscribe(subscriber)
session = subscriber.session
if is_authenticated?(session[:authentication_token])
@subscribers.delete(subscriber)
end
end
def is_authenticated?(token)
User.where(authentication_token: token).exists?
end
end
Теперь все, что вам нужно сделать, это убедиться в том, что при аутентификации пользователя session[:authentication_token]
устанавливается. В основном, это будет установлено в контроллере:
# user has successfully authenticates
session[:authentication_token] = @user.authentication_token
Для других людей, имеющих эту проблему, я решил это.
https://gist.github.com/j-mcnally/6207839
В основном маркер масштаба системы для меня техника его подводит, тем более, что я использую Завещание. Если вы хотите разместить свой веб-сайт в слове chrome extension, проще просто просто ввести имя пользователя/пароль для топания и управлять своими виртуальными сессиями подписчиков в стопплете. Это также позволяет вам делать некоторые забавные вещи, насколько вы нажимаете.
- 1. Laravel Аутентификация, отличная для клиентов и пользователей
- 2. Неявная «аутентификация» запросов на обслуживание клиентов
- 3. WCF Аутентификация клиентов в нескольких службах
- 4. Аутентификация нескольких клиентов с использованием одного сертификата
- 5. CA SiteMinder автономная аутентификация для толстых клиентов
- 6. Аутентификация клиентов API REST только для моего приложения
- 7. Аутентификация клиентов MVC с помощью токенов веб-API
- 8. Виджет Iframe на веб-сайте клиентов и аутентификация для API
- 9. RESTful Аутентификация мобильных клиентов с помощью Spring MVC
- 10. Аутентификация WCF «дружественная» для клиентов, не относящихся к Microsoft?
- 11. Количество клиентов/клиентов WCF клиентов
- 12. python asyncore отслеживает клиентов
- 13. Воспитание клиентов-клиентов в iOS
- 14. Делегирование Kerberos для клиентов Ouside the Firewall
- 15. Присоединиться, чтобы найти клиентов-клиентов, встреченных
- 16. аутентификация строкового сообщения
- 17. безгласная аутентификация Azure AD b2c
- 18. Аутентификация службы Firebase
- 19. Аутентификация сертификата Firebase
- 20. аутентификация клиента asio
- 21. Аутентификация ASP.NET и аутентификация форм
- 22. Подключить клиентов
- 23. Отслеживание клиентов
- 24. Множественная аутентификация Laravel - Socialite Plugin
- 25. Ссылки Firebase - Локальная аутентификация
- 26. Аутентификация html-страниц
- 27. Аутентификация с basicHttpBinding
- 28. RESTful Аутентификация клиента Android
- 29. SslStream и аутентификация
- 30. аутентификация клиента серверу gae