Как защитить учетные данные во время Flex ChannelSet.login? - PullRequest
1 голос
/ 18 сентября 2010

Мне только что пришло в голову, что когда мое приложение Flex выполняет ChannelSet.login, оно по существу отправляет имя пользователя и пароль по сети в незашифрованном виде на сервер BlazeDS. В то время как я использую двоичный протокол AMF поверх AMFChannel, кому-то ничего не понадобится, чтобы прослушать эти пароли.

Большинство моих клиентов не хотят запускать свои приложения на защищенном https (SSL) сайте. Так каков наилучший способ сделать это? Я использую Spring-безопасность на бэкэнде для аутентификации.

Должен ли я зашифровать учетные данные самостоятельно перед вызовом входа в систему? Думаю, тогда мне нужно знать алгоритм шифрования на стороне сервера.

Мысли

Ответы [ 2 ]

3 голосов
/ 18 сентября 2010

Без SSL вы можете использовать только общий метод шифрования между клиентом и сервером. В этом случае вы можете реализовать пользовательский LoginCommand в BlazeDS, который будет расшифровывать входящее зашифрованное имя пользователя / учетные данные для использования на стороне сервера.

Существуют и другие методы (SSO, PreAuthentication, SessionKeys), но если ваши клиенты не хотят использовать SSL или готовы заставить своих пользователей использовать самозаверяющий SSL-сертификат, подписанный Selg, то я сомневаюсь, что они пойдут на альтернативы.

Если вас беспокоит сжатие имени пользователя / пароля, тогда минимальное требование - SSL при использовании ChannelSet.login с именем пользователя / паролем.

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

0 голосов
/ 20 сентября 2010

Если вы используете Java, лучше всего использовать Spring Security.

http://www.adobe.com/devnet/flex/articles/flex_security.html на английском

...