哪个是acegi,jsecurity和Stark安全性中最好的安全解决方案?
JSecurity实际上在不久前成为了一个名为Apache Ki的Apache项目,他们因为某些原因对名称更改感到不满意,并在此之后很快将其更改为Apache Shiro.此外斯塔克只是一个Grails插件封装为春季安全和Acegi的是春季安全项目的由来.
那么哪一个使用?
首先,Spring Security是一个成熟的安全API,已经广泛使用,因此从稳定性,支持性和特别是安全性的角度来看,它是一个不错的选择.不幸的是,Shiro在这方面有所失落,因为据我所知,它仍然缺乏广泛的采用.
其次,他们的安全框架实际行为方式非常重要,它必须能够让您做自己喜欢的保护应用程序的方案.例如,虽然有些人喜欢Shiro的工作方式(参见本教程,特别是标题下的部分"Quickstart.java"),但是其他人不能没有Spring Security的Spring-esque等等.基本上你需要尝试两者,并从可用性的角度来确定它们是否满足您的需求.
第三,确保实际安全!Spring安全性可以保证安全,Shiro 最有可能是安全的,因为没有广泛采用可以轻松隐藏安全问题,例如,看看Firefox漏洞,看看用户群从长远来看如何开始影响应用程序的实际安全性.
为了结束这个,如果我必须为你选择,我会选择Spring Security,因为它被广泛使用,它保证是安全的并且已经与Grails集成.JSecurity/Ki/Shiro一点也不差,我已经使用了一段时间,但目前它处于某种状态,因为谁知道是什么原因以及安全框架是不可接受的.
编辑:自从我回答这个问题已经超过1年了,所以我觉得有必要回来说我们公司最近决定采用Spring Security,因为它具有高可插拔性和经过验证的功能.这当然让我有点偏颇,但无论如何,我会说Spring Security是要走的路.
Esko的回答非常好,很有竞争力.我在一个月前对不同的框架进行了评估,并选择了Shiro作为底层安全框架,尽管之前有过Spring Security的经验.我需要一个能够创建复杂授权要求的解决方案.JSecurity的模型非常简单,但非常强大.
但最终让我信服的是Nimble插件,它是Shiro顶部的一层UI.它允许您管理用户,角色,组,自助服务帐户创建,电子邮件等...并且易于集成到您的应用程序中.不必编写所有代码对我来说是一个巨大的胜利.它还允许与OpenId,Facebook和其他人集成.
如果Nimble为SpringSecurity工作,我可能会选择它,但我认为这对我来说是一个巨大的胜利.