10 java spring jersey spring-security spring-boot
我在pom.xml实际保护根 路由的过程中使用以下内容,我看到认证过程在浏览器中启动几秒钟
<filter>
<filter-name>CsrfFilter</filter-name>
<filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CsrfFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
现在,我有特定的路线,当用户选择时我需要保护...
@Path("/run")
public class Service {
...
@GET
@Path("connect/{param}")
public Response connectToHost(@PathParam("param") String host) {
Run Code Online (Sandbox Code Playgroud)
我应该怎么做?通过如上所述的pom配置或通过每条路线的代码?
你的问题中有一些令人困惑的地方,但我会试着尽我所能.
一.过滤器设置 - 根据您的问题,您进行了过滤器设置pom.xml.但实际上过滤器设置总是在web.xml文件中进行.如果您错误地命名为pom.xml,则忽略但如果没有,则将过滤器设置移至web.xml.
二.在您的问题标签中,您提到您的查询与spring-boot,spring-security有关.但是您附加的代码示例表明您可能正在使用jersey来创建rest apis而不使用spring,spring-security.您实际上是尝试在tomcat服务器级别使用较低级别的csrf保护.没关系.
三.CSRF保护可以与spring security以及tomcat apis一起使用.
四.如果您想了解Spring安全性如何为休息端点提供csrf保护,则必须在代码中提供以下配置.
@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
}
Run Code Online (Sandbox Code Playgroud)
这将为您的应用程序的所有POST,PUT,PATCH,DELETE请求提供csrf保护.有关详细信息,请参阅https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html.
五.现在,您的实际问题是如何为基于球衣的休息端点的多条路线提供csrf保护......您可以提供多个网址模式,如下所示.
<filter>
<filter-name>CsrfFilter</filter-name>
<filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CsrfFilter</filter-name>
<url-pattern>/run</url-pattern>
<url-pattern>/path1</url-pattern>
<url-pattern>/path2</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅https://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#CSRF_Prevention_Filter_for_REST_APIsRestCsrfPreventionFilter.
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |