首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java + Spring Boot + REST安全问题

Java + Spring Boot + REST安全问题
EN

Stack Overflow用户
提问于 2019-10-27 12:59:13
回答 2查看 80关注 0票数 0

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

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

对于我的控制器,我被设置为使用@PreAuthorize,通常使用#oauth2.hasScope('xxx')。我希望潜在的get方法允许匿名get与锁定方法在同一个控制器中。

所以..。我所做的是在ResourceServerConfig中使用下面的代码行:

代码语言:javascript
复制
http.authorizeRequests().antMatchers("/*").permitAll();

所以基本上,所有东西都是允许的,然后@PreAuthorize会覆盖我想要保护的任何东西。

我宁愿用PreAuthorize定义哪些方法被锁定在控制器中,而不是维护一个巨大的匿名路径的ant matcher列表。在我看来更干净了。

这一切都像预期的那样工作。没有@PreAuthorize的任何方法都是开放的,而具有@PreAuthorize的方法需要身份验证。

("/*").permitAll()有什么危险吗?由于我是Java的新手,我不确定这是否会打开任何漏洞?似乎有一些“隐藏”的端点,因为我必须在swagger config: RequestHandlerSelectors.basePackage("org.xxx.yyy")中添加一个筛选器,以便只显示我的实际API。

只是想知道有没有什么后果。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-10-27 13:05:40

@SledgeHammer,不是让它保持打开"/",而是在控制器中处理它,将它重定向到某个地方,而不是保持"/“到permitAll,所以将它应用于特定的url模式。

票数 0
EN

Stack Overflow用户

发布于 2019-10-27 14:23:48

您不应该使用("/*").permitAll(),因为它的计算结果始终为真。例如,"denyAll“将拒绝对所有匹配消息的访问;" permitAll”将授予对所有匹配消息的访问权限,因此如果您使用permitAll,则实现安全性没有任何用处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58576754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档