【发布时间】:2017-09-14 03:34:21
【问题描述】:
我有一个带有几个 REST 控制器的 Spring Boot Web 应用程序。它使用 Spring Security 进行基于表单的身份验证 (1)
此外,应用程序正在读取存储的请求并将它们分派给自己。为此,我有一个自定义 Spring Dispatcher servlet 和一个用于存储请求的过滤器链。调用时,它让 Spring DispatcherServlet 将 HTTP 请求分派到正确的 REST 控制器 (2)
我想设置 Spring 安全性,使其不需要对 (2) 情况进行身份验证 - 即当 http 请求来自应用程序本身时。
有人知道如何实现这一目标吗?
【问题讨论】:
-
是的,我想在第二种情况下完全禁用 Spring Security。不幸的是,没有起始路径,它可以是任何资源。
-
由于我正在构建请求然后将其传递回 Spring DispatcherServlet,我想我可以设置一个属性 - javax.servlet.ServletRequest.setAttribute。另一种选择是使用动态值(令牌?)设置某个请求标头,然后允许具有有效令牌的请求。
-
我写了一个答案,但它只是从技术上解决问题。你需要保护这个请求,因为你不想让每个人都绕过 Spring Security。您可以使用令牌(如您所述),但您也可以使用 Spring Secrity 进行检查。也许更好的方法是使用转发而不是重定向。 Spring Security 不会再次检查它。
标签: java spring spring-security