Dromara Sureness:把 REST API 鉴权这事做薄做快

📅 2026/7/8 2:12:28 👁️ 阅读次数 📝 编程学习
Dromara Sureness:把 REST API 鉴权这事做薄做快

文章目录

  • Dromara Sureness:把 REST API 鉴权这事做薄做快
    • 1、 解决什么问题
    • 2、 性能数据
    • 3、 和老牌框架比一比
    • 4、 怎么接入
    • 5、 框架适配样例
    • 6、 谁适合用

Dromara Sureness:把 REST API 鉴权这事做薄做快

sureness 在 GitHub 上拿到 877 Star 了。

Dromara 开源了这个安全框架,只干一件事:保护 REST API。认证、鉴权、RBAC,塞进一个不挑框架的内核里,Spring Boot、Quarkus、Javalin、Ktor、Micronaut 都能接。

1、 解决什么问题

后端做接口鉴权,绕不开两个老选手:Shiro 和 Spring Security。Shiro 学起来轻,但 REST 和 WebSocket 得自己改造;Spring Security 功能全,但是和学习曲线一样陡,配置一不留意就锁死在 Spring 体系。

sureness 想填的空位很明确:REST 优先、框架无关、性能不拉、上手简单。它把请求 URI 加上 HTTP 方法当资源,比如/api/v2/book===get,再按 RBAC 把角色挂到资源上。匹配走的是字典匹配树,不是常见的 ant match。

2、 性能数据

仓库里给了一份 benchmark,三款框架对比无框架裸跑的耗时:

  • 无框架:0ms 基线
  • sureness:损失 0.026ms
  • Shiro:损失 0.088ms
  • Spring Security:损失 0.116ms

换成 TPS 数字,sureness 是 Shiro 的 3 倍、Spring Security 的 4 倍。API 匹配链加长后差距还会扩大。原因主要在那棵字典匹配树,路径和角色的查找复杂度不跟着路由数线性涨。

3、 和老牌框架比一比

仓库里直接放了一张对比表,挑几条关键的:

能力surenessShiroSpring Security
多框架支持原生支持需改造不支持
WebSocket支持不支持不支持
JAX-RS支持不支持不支持
路径匹配字典匹配树ant matchant match
动态权限支持需改造需改造
学习曲线简单简单

WebSocket 和 JAX-RS 这两块是 sureness 显得特别的地方。Shiro 和 Spring Security 在这两个容器上要么不支持要么绕弯,sureness 是 Servlet 和 JAX-RS 两边都吃。

4、 怎么接入

Maven 工程加坐标:

<dependency><groupId>com.usthe.sureness</groupId><artifactId>sureness-core</artifactId><version>1.1.0</version></dependency>

Gradle 写法:

compile group: 'com.usthe.sureness', name: 'sureness-core', version: '1.1.0'

默认配置DefaultSurenessConfigsureness.yml当数据源,JWT、Basic、Digest 三种认证开箱可用:

@BeanpublicDefaultSurenessConfigsurenessConfig(){returnnewDefaultSurenessConfig();}

账号和权限数据可以从文本、关系库、非关系库、注解里来。框架提供两个接口:SurenessAccountProvider喂账号,PathTreeProvider喂资源角色映射。想从数据库读就实现这两个接口,余下交给内核。

拦截器拿到请求后调一行做认证:

SubjectSumsubject=SurenessSecurityManager.getInstance().checkIn(servletRequest);

成功返回SubjectSum,失败抛异常。异常分得很细:账号禁用、凭证过期、权限不足各有对应类型,业务侧 catch 后自己决定返回什么响应。

5、 框架适配样例

仓库里给了一长串集成样例,几乎覆盖主流后端框架:

  • Spring Boot 配置文件方案 sample-bootstrap
  • Spring Boot 数据库方案 sample-tom
  • Quarkus、Javalin、Ktor、Micronaut、Solon、JFinal
  • Spring Gateway、Zuul 网关
  • Session 方案和 Redis Session 缓存方案

样例代码量不大,拿来对照自己的工程结构最直观。

6、 谁适合用

在做微服务网关、需要统一鉴权层的团队。Spring Cloud Gateway 和 Zuul 都有现成样例,迁移成本主要是把账号数据灌进去。

被 Shiro 或 Spring Security 的复杂度卡住、想换一套 REST 优先方案的开发者。学习曲线那一栏标的是简单,文档和 demo 也跟得上。

需要支持 WebSocket 或 JAX-RS 容器的项目。这两块老框架不打算补,sureness 是少数能直接给出方案的选项。

更进一步定制可以走扩展点:自定义 Subject、自定义 SubjectCreator、自定义 Processor、自定义数据源。内核是 Apache 2.0 协议,商用没有负担。

877 Star 不算炸,但 dromara 旗下还挂着 HertzBeat、MaxKey 这些项目,整体是在企业运维和身份权限这条线上做深耕的开发者社区。如果接口鉴权是当前的瓶颈点,sureness 值得拿来试一把。

r 不算炸,但 dromara 旗下还挂着 HertzBeat、MaxKey 这些项目,整体是在企业运维和身份权限这条线上做深耕的开发者社区。如果接口鉴权是当前的瓶颈点,sureness 值得拿来试一把。