【发布时间】:2019-10-27 04:59:12
【问题描述】:
我是 Java 新手。我正在使用 Spring Boot + OAuth2 身份验证 + Swagger 创建一个 REST api。
我想做的显然是让 swagger 页面允许匿名访问,而 /token/oauth 端点需要基本身份验证。
对于我的控制器,我设置为使用@PreAuthorize,通常使用#oauth2.hasScope('xxx')。我想可能有 get 方法,允许在与锁定方法相同的控制器中进行匿名 GET。
所以...我所做的是在 ResourceServerConfig 中的行为:
http.authorizeRequests().antMatchers("/*").permitAll();
所以基本上,一切都是允许的,然后@PreAuthorize 会覆盖我想要保护的任何内容。
我宁愿使用 PreAuthorize 定义哪些方法被锁定在控制器中,然后维护一个巨大的匿名路径匹配器列表。对我来说似乎更干净。
这一切都按预期工作。任何没有@PreAuthorize 的方法都是开放的,而有@PreAuthorize 的方法需要身份验证。
("/*").permitAll() 有什么危险吗?由于我是 Java 新手,我不确定这是否会打开任何漏洞?似乎有一些“隐藏”端点,因为我必须向 swagger 配置添加一个过滤器:RequestHandlerSelectors.basePackage("org.xxx.yyy") 只显示我的实际 API。
只是想了解任何后果。
谢谢。
【问题讨论】:
标签: java spring-boot spring-security swagger