oauth2.0 SecurityFilterChain - regexMatchers(),用于验证与其他端点结构相似的端点

bksxznpy  于 2023-08-02  发布在  其他
关注(0)|答案(1)|浏览(97)

我有三个终点:

  • GET /rest/file/{name}/{guid} -这一个使用OAuth2令牌保护
  • GET /rest/file/task/{guid}
  • GET /rest/file/{guid}

我需要一个Regex表达式用于Spring Security的SecurityFilterChain with OAuth2 Resource Server。它应该捕获最后一个端点,而不是前两个端点。资源服务器已经为许多其他端点正确配置,所以这不是一个全局问题,而是严格的Regex问题。
示例:

  • /rest/file/aaaaa/{guid}已针对OAuth2令牌进行验证
  • 未针对OAuth2令牌验证/rest/file/task/{guid}
  • 未针对OAuth2令牌验证/rest/file/{guid}

我看到两种方法:
1.路径变量{name}不是“任务”且路径变量{guid}在{name}之后的URL与GUID的结构匹配
1.路径变量{name}不是“任务”的URL,同时{name}与GUID结构不匹配
我用了这个方法,但它总是返回403。

  1. private static final String REGEX_GUID = "^[{]?[0-9a-fA-F]{8}"
  2. + "-([0-9a-fA-F]{4}-)"
  3. + "{3}[0-9a-fA-F]{12}[}]?$";
  4. .regexMatchers(HttpMethod.GET, "/rest/file/^(?!task$)/" + REGEX_GUID)

字符串

ru9i0ody

ru9i0ody1#

如果有人感兴趣,它与:

  1. private static final String REGEX_GUID = "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$";
  2. .regexMatchers(HttpMethod.GET, "/rest/file/(?!.*task).*/" + REGEX_GUID)

字符串

相关问题