如何在Flex ChannelSet.login期间保护凭据?

时间:2010-09-18 05:30:19

标签: flex security spring-security blazeds credentials

我刚刚想到,当我的Flex应用程序执行ChannelSet.login时,它实际上是以未加密的形式通过线路将用户名和密码发送到BlazeDS服务器。虽然我在AMFChannel上使用二进制AMF协议,但有人无需嗅探这些密码。

我的大多数客户都不想在受https(SSL)保护的网站上运行他们的应用程序。那么最好的方法是什么?我在后端使用Spring安全性来进行身份验证。

我应该在调用登录之前自己加密凭据吗?我想那时我需要知道服务器端加密algorthym。

思想?

2 个答案:

答案 0 :(得分:3)

如果没有SSL,您只能在客户端和服务器之间使用共享加密技术。在这种情况下,您可以在BlazeDS中实现自定义LoginCommand,它将解密传入的加密用户名/凭据,以便在服务器端使用。

还有其他技术(SSO,PreAuthentication,SessionKeys),但如果您的客户不会为SSL争吵或准备强迫他们的用户使用自签名的Selg Signed SSL证书,那么我怀疑他们会选择替代方案。

如果您担心被编译的用户名/密码,那么在使用带有用户名/密码的ChannelSet.login时,最低要求是SSL。

我认为一个很好的解决方案是通过HTTPS使用用户名/密码登录,然后发出会话密钥,然后您可以使用HTTP上的用户名/会话密钥来检查即将发送的非安全请求是否来自认证用户。会话密钥在任意时间后超时。

答案 1 :(得分:0)

如果您使用Java,最好的方法是使用Spring Security。

http://www.adobe.com/devnet/flex/articles/flex_security.html英文