Web 容器管理安全性的常见替代方案?

Posted

技术标签:

【中文标题】Web 容器管理安全性的常见替代方案?【英文标题】:Common alternatives to web container managed security? 【发布时间】:2012-05-29 08:45:09 【问题描述】:

使用 Tomcat(或 Websphere)容器管理的安全性的常见替代方法是什么?

我有一个令人不快的安全库,它从多个地方提取授权和身份验证,最初将在 Tomcat 上进行早期开发,然后在 Websphere 上进行后期开发和生产。而不是通过 JAAS 为 Tomcat 设置自定义领域所需的 hack-a-doo,然后在 WAS 上进行另一轮 hack,是否有任何常见的替代方案?

我只在 Tomcat 上做过基于领域的安全。我见过一些有趣的自制方法,例如在会话http://www.vitarara.org/cms/struts_2_cookbook/creating_a_login_interceptor 中监视用户对象。我也很好奇带有 http://host.com/view.jsp?a_wiki_page 的 wiki 页面(例如)如何设法保持角色直截了当,因为这似乎是 wiki 和 bbs 通常需要的,也许这就是我的解决方案?

有什么建议吗?

【问题讨论】:

【参考方案1】:

Spring Security 是一种流行的替代方案:

http://www.springsource.org/spring-security

【讨论】:

【参考方案2】:

Spring Security 提供了一种全面的、与容器无关的方法,我已在 WebSphere 和 Tomcat 上成功使用过该方法(特别是在 Tomcat 上构建/测试并在 WebSphere 上部署)。

我真正喜欢该框架的地方在于,它为您提供了一个以应用程序为中心、与源代码无关的当前用户及其在应用程序中的权限的视图。这意味着您可以从任何地方加载用户和权限,并且只需要关注配置的来源(LDAP、数据库、属性文件、内存中测试对象、SAML 断言等)

它还为您提供了许多您在 Java EE 安全性中根本没有定义的细粒度授权控制(基于 URL 和基于方法)。您可以使用正则表达式和 Ant 样式的表达式进行模式匹配,否则您将无法使用。表达式语法也相当丰富。如果您需要进行数据特定的访问控制,我们提供了 DDL 供您添加到您的数据库并直接集成到您的安全中。

Spring Security 作为过滤器运行,使用“/*”URL 映射(或您选择保护的任何映射)过滤您对 Web 容器的所有请求。

【讨论】:

谢谢,这很有用。这里的小组非常不愿意使用 Spring,但他们确实使用了 Struts2,并且由于您的回答,我能够找到一个使用 Struts 拦截器的对称解决方案。谢谢! 很高兴您找到了答案。但是,作为记录,您可以独立于 MVC 框架使用 Spring Security。所以这意味着(如果你愿意的话)你可以毫无问题地使用 Spring Security 和 Struts2。 我愿意。坦率地说,我也更愿意使用 Struts MVC,但是这些怪人不想在任何地方看到 spring jar 文件。但是他们确实希望他们的身份验证由 JAAS 支持(然后使用使用 Hibernate 的自定义登录模块)。这将是一份痛苦的合同。

以上是关于Web 容器管理安全性的常见替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

何时从容器管理的安全性转移到 Apache Shiro、Spring Security 等替代方案?

何时从容器管理的安全性转移到 Apache Shiro、Spring Security 等替代方案?

何时从容器管理的安全性转移到 Apache Shiro、Spring Security 等替代方案?

何时从容器管理的安全性转移到 Apache Shiro、Spring Security 等替代方案?

Rancher Labs联手NeuVector,提供容器管理与安全解决方案

容器解决方案-Docker的7种替代方案