接口直接对外暴露
用户请求默认都会被 Spring Security OAuth2 拦截;没有合法 token 的请求会被拒绝。只有明确需要对外开放的接口,才允许加入白名单。
常规做法
在对应微服务的配置中增加 security.oauth2.client.release-urls:
security:
oauth2:
client:
release-urls:
- /actuator/**
- /v3/api-docs/**
- /portal/**
- /open/notify/**
如果某个 Controller 方法上用了 @PreAuthorize(...),而你又希望它能匿名访问,还需要同步去掉该方法上的权限注解,否则仍会因为权限不足被拦截。
文件上传特别说明
/upms/file/upload/out 虽然仍在对外白名单里,但它已经不是“任意目录公开上传接口”。
现行规则是:
- 只能走后端定义好的白名单场景
dir参数必须传场景码,不再兼容旧目录别名- 每个场景都有固定存储目录
- 每个场景都有明确的文件类型限制
- 当前只保留租户申请、供应商入驻这类匿名图片上传场景
- IM、素材库等登录后上传统一走受保护的
/upms/file/upload
当前场景码:
tenantApplysupplierApplyLicense
所以如果后续需要新增公开上传能力,正确做法不是继续放开新的 dir,而是:
- 明确业务场景
- 明确允许的文件类型和大小
- 在后端新增白名单场景策略
- 让调用方传新的场景码
- 同步更新上传文档
补充说明:
- 仅新增白名单场景码时,继续复用
/upms/file/upload/out,不需要新增新的release-urls - 只有新增了全新的匿名接口路径,才需要重新评估是否加入对外白名单