Java身份验证的替代方案有哪些?

5
最好是能够与Flex前端良好集成的东西。是的,Spring Security的人说这是可能的,但所有的示例似乎都使用遗留的JSP标签库,使它们变得半无用。我不想花一个月的时间来设置和学习如何使用安全工具。我想要一个支持使用注释(@RolesAllowed等)、最小XML和“记住我”功能(不基于cookie)的工具。
Apache Shiro似乎也支持Flex/Silverlight/Swing,但我想知道是否有其他不特定于容器的替代方案。

当你说不想基于cookie时,你建议使用哪种记住我方式?在一个会话中,你可以使用URL参数,但是在不同的会话之间,我不知道有什么方法可以存储凭据而不使用(flash)cookie。 - Simon Groenewolt
SharedObject不能做到这一点吗? http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/SharedObject.html 我不知道实现这个的物流是什么,但使用不需要容器(如Shiro)的东西来摆脱容器会话管理将是很好的。我想能够在J2EE容器上部署而不必担心每次都会破坏我的安全/会话功能,但我也不想花费三分之一的开发时间来设置这样的安全性。这不是一个值得追求的目标吗? - Manius
3个回答

8

事实证明,Apache Shiro 比 Spring Security 更简单、更易学。没有愚蠢的 XML 配置是一件好事。


0

我不明白为什么Flex需要进行身份验证,毕竟这是客户端的事情。有什么阻止别人反编译你的Flash/Flex呢?

对于大多数人来说,Apache Shiro太过复杂,他们只会自己开发。但老实说,这并不是最好的想法。多年来,我见过很多可怕的身份验证系统。Cookie本来就是用来跟踪客户端会话的,为什么要使用其他东西呢?

编辑: 使用Spring Security进行身份验证。


我认为你误解了,我并不想让Flex本身认证任何东西(而swf黑客正是我寻找真正的服务器端安全性的原因)。它唯一的涉及是使用Blaze或Granite DS通过远程调用(RemoteObject)进行调用,而不是简单的表单提交,这意味着jsp标签示例并不是很好的示例。 - Manius
2
@Crusader,你有点混淆了。为了维护会话状态,向 Web 服务器传递会话 ID 是绝对必要的。无论该状态是由 Session Bean 还是使用数据库来保持,从安全角度来看都是无关紧要的。如果通过 XSS 或嗅探泄漏了此会话 ID,则该帐户将受到攻击。这就是为什么 OWASP A3:破坏的身份验证和会话管理要求在整个会话期间使用 HTTPS 的原因。 - rook
我认为你把老派的网页开发和富互联网应用程序开发混淆了。无论如何,这远离主题,根本没有回答问题。 - Manius
@The Rook 我更喜欢Egg Beaters. =) 不好意思,使用Spring安全性时有太多的配置和依赖关系。使用多少兆字节的臃肿互相依赖的jar文件才能创建一个带有合理安全性的简单CRUD应用程序呢? :/ 我认为Shiro的开发哲学是无法超越的,所以我会选择它,不再跟随“Spring子项目”的炒作浪潮。我不会仅仅因为它前面有Spring这个词就使用任何东西。 - Manius
冒着像个推销员的风险,我建议您查看Shiro网页上的使命声明和功能部分,以了解他们的目标。这正是我在安全框架中一直寻找的。我不知道他们的目标是否仅仅与Spring Security不同,还是他们只是做得更好,但Shiro确实是不同的。很棒,终于有人“懂了”,并致力于开发具有此类目标的工具。https://cwiki.apache.org/SHIRO/about.html https://cwiki.apache.org/SHIRO/features.html - Manius
显示剩余4条评论

0

Spring Security是目前最好的工具。

BlazeDS并不神奇。它最终只是通过HTTP调用服务器。Blaze应用程序只是一个war文件,并且有传统的URL。因此,要保护服务,必须保护web.xml / spring配置文件中的URL。

基本上,阅读Spring Security / JAAS的文档,并将jsps替换为您的blaze服务的URL。

Spring Security还支持角色和授权。它还具有记住我功能,但这绝对使用cookie。没有cookie就不能有记住我功能。

关于身份验证,可以将身份验证令牌作为请求参数传递,而不是作为cookie。但是建议使用cookie,这样更容易做到正确。

最后,如果您关心安全,那么没有使用https就毫无意义。在整个应用程序中绝对必须使用https。


3
我不明白为什么大家都说Spring Security很好(或者说Shiro是“过度设计”),因为Spring Security有很多依赖和陡峭的学习曲线。Shiro的目标是成为“最易于使用”的安全框架,几乎没有依赖和JAR冲突,并且只需要非常少量的配置。与Spring xml狂热相比,我不明白为什么有人会说Shiro过度设计,如果说有什么区别的话,可能是Spring Security拥有更多的功能,但也更加臃肿。听起来这两个框架似乎是唯二的选择... - Manius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接