【问题标题】:Authentication meachanism in springspring 中的认证机制
【发布时间】:2015-04-10 16:38:07
【问题描述】:

我正在阅读有关身份验证在 Spring 中的工作原理,发现有两个过滤器负责身份验证。

AuthenticationProcessingFilterBasicProcessingFilter

所以我在BasicProcessingFilter::doFilterHttpAuthenticationProcessingFilter::attemptAuthenticationAuthenticationProcessingFilterEntryPoint::commence 中设置了断点,程序并没有在其中任何一个处停止。

这是否意味着我的网络应用程序目前根本没有身份验证机制?

也许这与我定义了一个自定义资源过滤器有关:

<beans:bean id="secureResourceFilter"
    class="my.custom.class.CustomSecureResourceFilter">
    <beans:property name="jdbcSecuredUrlRoleDao" ref="jdbcSecuredUrlRoleDao" />
</beans:bean>

在我的 Spring-security 配置中我没有定义 AuthenticationProcessingFilterBasicProcessingFilter 直接。我只是指定

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

web.xml.

【问题讨论】:

    标签: java spring authentication spring-security


    【解决方案1】:

    预计如果您使用 Spring boot,您至少必须配置您的 Spring 上下文。要么使用 Java 配置,要么使用 XML 文件。

    对于 Java 配置:http://docs.spring.io/autorepo/docs/spring-security/3.2.x/guides/helloworld.html 对于 XML 文件:http://www.springbyexample.org/examples/simple-spring-security-webapp-spring-config.html

    请注意,您可以通过在委托过滤器代理中放置一个断点并查看过滤器链来查看您的应用程序中使用了哪些过滤器。子过滤器按顺序应用。

    【讨论】:

    • 过滤器存储在 DelegatingFilterProxy 中的什么位置?
    • 委托实际上完成了这项工作。委托是从 Spring 上下文中检索的。代理基本上是在外部和 Spring 安全上下文之间建立链接。您必须在实际委托中放置一个断点。
    • 谢谢。我已经找到了。你不能再解释一件事。如果非授权用户尝试获取安全网页,什么过滤器会接管重定向到登录页面?
    • 对于这种特殊情况,请查看 LoginUrlAuthenticationEntryPoint。这是一个入口点。
    • 如果您想跟踪身份验证异常时的行为,请在引发此异常的地方设置断点。授权异常基本上是由安全投票者抛出的。
    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多