Во-первых, если существует настоящий, официальный способ заставить NetConnection
s flash/flex узурпировать состояние сеанса/cookie окружающей веб-страницы, так что, если пользователь уже вошел в систему, ему не нужно снова вводить учетные данные только для того, чтобы настройте соединение AMF, пожалуйста, остановите меня сейчас и опубликуйте официальный ответ.
За исключением этого, я предполагаю, что его нет, поскольку я искал, и, похоже, его не существует. Я придумал способ сделать это, но хочу получить отзыв о том, безопасно ли это.
- Доступ к странице-оболочке для объекта flash всегда будет осуществляться через безопасный https из-за промежуточного программного обеспечения django.
- Когда просмотр страницы загружается в Django, он создает объект «псевдоним сеанса» с уникальным ключом, который указывает на текущий сеанс в игре (в котором кто-то якобы вошел в систему)
- Эта модель псевдонима сеанса сохраняется, и этот ключ помещается в файл cookie, ключ которого представляет собой другую случайную строку, назовем ее randomcookie.
- Это имя ключа randomcookie передается как контекстная переменная и записывается в html как flashvar для swf.
- swf тоже грузится только через https
- Флэш-приложение использует
ExternalInterface
для вызова java для получения значения в этом месте случайного файла cookie, а также удаляет файл cookie. - Затем он создает
NetConnection
для безопасного местоположения https сервера, передавая этот randomcookie в качестве аргумента (данные, а не в URL-адресе) в rpc с использованием файла cookie. - На стороне шлюза pyamf просматривает псевдоним сеанса и получает сеанс, на который он указывает, и регистрирует пользователя на основе этого (и удаляет псевдоним, поэтому его нельзя использовать повторно)
- (И запрос шлюза также может установить cookie сеанса и session.session_key на известный идентификатор сеанса, но я мог бы позволить ему создать совершенно новый ключ сеанса... Я предполагаю, что это должно должным образом повлиять на ответ, чтобы он содержит правильный сеансовый ключ)
- На этом этапе возвращаемые значения cookie на стороне флэш-памяти должны придерживаться
NetConnection
, чтобы дальнейшие вызовы аутентифицировались (если соединение аутентифицируется с использованием имени пользователя и пароля обычным способом, это определенно работает, поэтому я думаю, что это безопасная ставка, тестирование скоро подтвердит или опровергнет это)
Итак, это небезопасно, или это будет работать правильно? Насколько я знаю, поскольку html-страница гарантированно работает через ssl, ключ и данные cookie должны быть зашифрованы и не могут быть украдены. Затем информация в нем должна быть безопасной для одноразового использования в качестве временного пароля, повторно отправленного через ssl, потому что шлюз также является https. После этого он использует обычную систему pyAMF через https и не делает ничего необычного.