【问题标题】:How to test Internet Explorer when using RequestHeaderAuthenticationFilter?使用 RequestHeaderAuthenticationFilter 时如何测试 Internet Explorer?
【发布时间】:2010-09-15 11:01:39
【问题描述】:

我们将 Spring Security 与 RequestHeaderAuthenticationFilter 一起使用,因此依赖于为用户名设置的 HTTP 标头。在我们的本地机器上,我们没有用于身份验证的软件,因此也没有标头。

使用 WebDriver 或 FireFox 进行测试时,我们可以设置标头并正确测试,但使用 Internet Explorer 手动测试时,我们无法设置标头值。

有没有在 IE 中设置标头值的好方法,或者在开发和测试中为过滤器启用某种“模拟”的好方法?

【问题讨论】:

    标签: java spring spring-security


    【解决方案1】:

    我最终使用带有命令行参数的 Spring Java 配置在标头身份验证和登录表单身份验证之间切换。

    它需要在(模拟左,真正右)之间切换:

    • UsernamePasswordAuthenticationFilter 和 RequestHeaderAuthenticationFilter
    • Lo​​ginUrlAuthenticationEntryPoint 和 Http403ForbiddenEntryPoint
    • DaoAuthenticationProvider 和 PreAuthenticatedAuthenticationProvider

    Spring Security 的内部结构并没有给我留下太深刻的印象,我花了很长时间才弄清楚这一点。但如果你需要这样做,至少这些是一些指针。

    【讨论】:

      【解决方案2】:

      在 Spring 上下文中设置 exceptionIfMissingHeader 属性。

      来自 javadoc: http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/authentication/preauth/RequestHeaderAuthenticationFilter.html

      “如果请求中缺少标头,getPreAuthenticatedPrincipal 将抛出异常。您可以通过设置 exceptionIfMissingHeader 属性来覆盖此行为。”

      【讨论】:

      • 抱歉回复慢,我以为输入回复后会收到一封电子邮件。这并没有真正对用户进行身份验证,我需要经过身份验证的用户。如果没有任何功能得到保护,这将起作用,但当您需要模拟登录时则不行。我最终做了很多黑客攻击,以便能够在标头身份验证和登录表单之间切换。 Spring Security 的内部结构并没有给人留下深刻的印象。我花了相当长的时间才弄清楚,结果并不是很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 2011-12-20
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多