【发布时间】:2014-08-19 04:29:57
【问题描述】:
我们有几个使用共享插件的 Grails 应用程序,其中包括为它们提供基本安全性。我们将在未来添加其他类型的身份验证,因此出现了使用 Spring Security 插件的想法。但是,我想知道它是否对于我们相当基本的需求来说太强大了。
目前,我们使用在访问任何 URL 之前运行的 Grails 过滤器并执行安全检查。初始身份验证是通过查找特定的加密 POST 变量或 cookie(从另一个封闭源应用程序发送)并在解密后验证我们数据库中的详细信息来处理的。如果一切顺利,我们认为用户已登录(并且还从加密数据中获得了他们的数字用户 ID)。所有用户都具有相同的访问权限,除了少数具有更大访问权限的用户。这些是在包含其数字 ID 的表中定义的。
但是,我们希望通过使用 Active Directory 凭据、闭源系统的 LDAP 服务器提供的凭据以及在不远的将来通过 CAS 服务器添加直接登录这些 Grails 应用程序的功能。
我最初的方法是寻找允许共享插件与这些不同系统交互并针对它们进行简单身份验证的库。但是,我注意到 Spring Security 似乎为所有这些不同类型的身份验证提供了插件,这将加快开发速度。但是,该模块本身似乎相当复杂,并且面向更高级的设置,这意味着我们可能会花费大量时间来设置 Spring Security,以节省使用其 LDAP、CAS 等插件的时间。
任何想法/cmets/等。非常感谢。
另外,如果我们要使用 Spring Security 插件,有人可以发表评论并让我知道是否可以进行以下设置...
我们希望避免为各种应用程序创建数据库表以进行身份验证。我们基本上想告诉 Spring Security,如果用户通过了身份验证,他们就会被身份验证。没有角色,没有组,没有什么花哨的(除了少数应用程序会有一个额外的角色/组,为用户提供额外的权限......对于这些应用程序,显然需要一个数据库表)。
我们还希望默认始终要求所有内容的安全性,并添加额外代码仅用于禁止此操作以允许未经身份验证的访问。这背后的想法是,如果开发人员忘记将 Spring Security 标记代码添加到控制器或操作中,它已经默认始终需要身份验证。
此外,我们仍然需要通过从另一个应用程序发送的加密 POST 变量或加密 cookie 来保留原始身份验证方法。是否可以将其构建到 Spring Security 中?
最后,Spring Security 插件能否存储身份验证后检索到的数字用户 ID 以识别用户,而不是存储身份验证期间使用的实际用户名?
【问题讨论】:
标签: security grails spring-security ldap cas