Java + Spring Boot + REST 安全问题

标签 java spring-boot spring-security swagger

我是 Java 新手。我正在使用 Spring Boot + OAuth2 身份验证 + Swagger 创建 REST api。

我想做的显然是让 swagger 页面允许匿名访问,并且/token/oauth 端点需要基本身份验证。

对于我的 Controller ,我设置为使用 @PreAuthorize,通常与 #oauth2.hasScope('xxx') 一起使用。我希望有一些 get 方法,允许在与锁定方法相同的 Controller 中进行匿名 GET。

所以...我所做的是在 ResourceServerConfig 中将这一行设置为:

http.authorizeRequests().antMatchers("/*").permitAll();

所以基本上,一切都是允许的,然后 @PreAuthorize 会覆盖我想要保护的任何内容。

我宁愿使用 PreAuthorize 定义哪些方法被锁定在 Controller 中,然后维护一个巨大的匿名路径匹配器列表。对我来说似乎更干净。

这一切都按预期工作。任何没有 @PreAuthorize 的方法都是开放的,并且有 @PreAuthorize 的方法都需要身份验证。

("/*").permitAll() 有什么危险吗?由于我是 Java 新手,我不确定这是否会造成任何漏洞?似乎有一些“隐藏”端点,因为我必须向 swagger 配置添加一个过滤器:RequestHandlerSelectors.basePackage("org.xxx.yyy") 以仅显示我的实际 API。

只是想了解任何后果。

谢谢。

最佳答案

@SledgeHammer,不要将其保持打开“/”,而是在 Controller 中处理它以将其重定向到某个位置,而不是将“/”保持为permitAll,因此将其应用于特定的url模式。

关于Java + Spring Boot + REST 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576754/

相关文章:

hibernate - Spring boot JPA 中的动态数据源

java - "NoSuchMethodError"的 Spring MVC 错误

javascript - 如何检查json对象是否为null?

java - Google App Engine 上的 Spring Security openid

java - 其他流的笛卡尔积流,每个元素作为一个列表?

java - 在 Android 中从文件中解码位图的一部分

java - spring 如何在开发中使用内存数据库,在生产中使用普通数据库?

spring - 你能解释一下这个Spring环境变量解析吗?

java - 单击按钮创建新窗口 - Vaadin 14

java - Openfire 插件集成