gpt4 book ai didi

Java spring-rest/Jersey 如何使用过滤器保护休息路线

转载 作者:IT老高 更新时间:2023-10-28 13:50:03 25 4
gpt4 key购买 nike

我在 pom.xml 中使用以下内容,它实际上是保护 root route,我看到身份验证过程在浏览器中启动了几秒钟

  <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>

现在,当用户选择它们时,我需要保护特定的路线...

@Path("/run")
public class Service {


...

@GET
@Path("connect/{param}")
public Response connectToHost(@PathParam("param") String host) {

我应该怎么做?通过上面的 pom 配置或通过每个路由的代码?

最佳答案

您的问题中有一些令人困惑的地方,但我会尽力涵盖所有内容。

一个。过滤器设置 - 根据您的问题,您在 pom.xml 中进行了过滤器设置。但实际上过滤器设置总是在 web.xml 文件中进行。如果您错误地命名了 pom.xml,则忽略,如果没有,则将过滤器设置移动到 web.xml。

两个。在您的问题标签中,您提到您的查询与 spring-boot、spring-security 相关。但是您附加的代码示例表明您可能正在使用 jersey 来创建 rest api,而不是使用 spring、spring-security。您实际上是在尝试在 tomcat 服务器级别的较低级别使用 csrf 保护。没关系。

三个。 CSRF 保护可以与 spring security 以及 tomcat apis 结合使用。

四。如果您想了解 Spring Security 如何为其余端点提供 csrf 保护,您必须在代码中提供以下配置。

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
}

这将为您的应用程序的所有 POST、PUT、PATCH、DELETE 请求提供 csrf 保护。引用 - https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html了解更多详情。

FIVE. 现在,关于如何为基于 jersey 的休息端点的多条路由提供 csrf 保护的实际问题...您可以提供多种 url 模式,如下所示.

<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>

引用 - https://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#CSRF_Prevention_Filter_for_REST_APIs有关 RestCsrfPreventionFilter 的更多详细信息。

关于Java spring-rest/Jersey 如何使用过滤器保护休息路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com