【问题标题】:Spring-Security http-basic auth in addition to other authentication typesSpring-Security http-basic auth 除了其他身份验证类型
【发布时间】:2011-06-02 15:52:21
【问题描述】:

我有一个使用 Spring Security 的非常标准的现有 web 应用程序,它需要数据库支持的表单登录以用于特定于用户的路径(例如 /user/**),以及一些完全开放和公共的路径(例如 /index.html )。

但是,由于此 web 应用仍在开发中,我想在所有路径 (/**) 中添加一个 http-basic 弹出窗口以增加一些隐私。因此,我正在尝试添加一个 http-basic 弹出窗口,该弹出窗口要求查看任何路径所需的通用用户/密码组合(例如 admin/foo),但仍然保持所有其他底层身份验证机制的完整性。

我真的不能对<http> 标记做任何事情,因为这会将“让爱管闲事的爬虫”身份验证与“用户登录”身份验证混淆,而且我看不到任何关联不同路径的方法具有不同的身份验证机制。

有什么办法可以通过 Spring Security 做到这一点吗?或者,是否有某种死的简单过滤器可以独立于 spring-security 的身份验证机制应用?

【问题讨论】:

    标签: java spring-security basic-authentication


    【解决方案1】:

    或者你可以看看即将推出的spring security 3.1(目前是3.1.0.M2),它支持multiple namespace elements

    【讨论】:

      【解决方案2】:

      是的,您可以在 Spring Security 中使用多个身份验证过滤器。但是,我发现最好的方法是省略 Spring Security 命名空间的 <http> 元素,而使用普通的 Spring Bean 表示法。

      “手动”指定所有 Spring Security bean 为您带来所需的灵活性来控制截获的 URL 以及哪些过滤器将为哪些 URL 模式触发。

      缺点是它需要指定很多额外的 bean 定义,其中许多当然不如命名空间变体可读。

      【讨论】:

      • 我不知道没有 http 标签你可以做到这一点 - 这将是一个更好的长期解决方案,但在我的情况下,我只需要快速破解以避免你描述的额外复杂性。我会坚持我的解决方案,但你的答案更好:D
      【解决方案3】:

      我刚刚在 Spring Security 之前使用了一个基本过滤器,如下所述:

      http://joomla.jcalfee.info/contact/2-java-authentication-filter

      这是一个很好的临时技巧

      【讨论】:

        猜你喜欢
        • 2016-05-31
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 2013-01-11
        • 1970-01-01
        • 2012-09-09
        • 2021-10-30
        相关资源
        最近更新 更多