在 acegi、jsecurity 和 Stark 安全中,哪个是 grails 的最佳安全解决方案?
4 回答
JSecurity实际上在不久前以Apache Ki的名义成为了一个 Apache 项目,由于某种原因,他们对名称更改不满意,并在此后不久将其更改为Apache Shiro 。此外, Stark只是 Spring Security 的 grails 插件包装器,而acegi 是 Spring Security 项目的起源。
那么使用哪一个呢?
首先,Spring Security 是一个成熟的安全 API,并且已经被广泛使用,因此从稳定性、支持尤其是安全角度来看,它是一个不错的选择。不幸的是,Shiro 在这方面有所损失,因为据我所知,它仍然缺乏广泛采用。
其次,安全框架的实际行为方式非常重要,它必须能够使您能够执行您最喜欢的保护应用程序的方案。例如,虽然有些人喜欢 Shiro 的工作方式(参见本教程,尤其是标题“Quickstart.java”下的部分),但其他人如果没有 Spring Security 的 Spring-esque 东西就无法生存等等。基本上,您需要尝试两者并从可用性的角度确定它们是否满足您的需求。
第三,确保实际安全!Spring Security 可以保证是安全的,Shiro最有可能是安全的,因为没有广泛采用可以轻易隐藏安全问题,例如Firefox 漏洞,看看增加的用户群如何开始影响应用程序的长期安全性。
最后,如果我必须为您选择,我会选择 Spring Security,因为它被广泛使用,保证安全并且已经与 Grails 集成。JSecurity/Ki/Shiro 一点也不差,我已经使用了一段时间,但目前它处于某种不确定状态,因为谁知道是什么原因,而且对于一个无法接受的安全框架而言。
编辑:自从我回答这个问题以来已经超过 1.5 年了,所以我觉得有必要回过头来说我们公司最近决定使用 Spring Security,因为它具有高可插入性和经过验证的功能。这当然让我有点偏见,但无论如何,我会说 Spring Security 是要走的路。
Esko 的回答很棒而且很全面。一个月前我对不同的框架进行了评估,尽管之前有过 Spring Security 的经验,但我还是选择了 Shiro 作为底层安全框架。我需要一个能够创建复杂授权要求的解决方案。JSecurity 的模型非常简单,但非常强大。
不过,最终说服我的是Nimble插件,它是在 Shiro 之上的一层 UI。它允许您管理用户、角色、组、自助服务帐户创建、电子邮件等......并且很容易集成到您的应用程序中。不必编写所有代码对我来说是一个巨大的胜利。它还允许与 OpenId、facebook 等集成。
如果 Nimble 为 SpringSecurity 工作,我可能会选择它,但我认为这对我来说是一个巨大的胜利。
与 Spring 的方法相比,我使用了这两个框架并且喜欢 Shiro 的工作方式。我不知道为什么 Spring Security 如此受欢迎。与 Shiro 不同,只要需要配置,Spring Security 就会在整个应用程序中疯狂运行。对于大多数应用程序来说,安全性不是一个跨领域的问题吗?如果是这样,将其隔离到一个位置不是“更干净的代码”吗?我的两分钱。
谢谢你们的回复。我实际上在 grails 应用程序上尝试了 spring security。grails 插件使它非常易于使用。
问候。
乔什