当前位置: 首页 > news >正文

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 值得拿来试一把。

http://www.jsqmd.com/news/1144856/

相关文章:

  • Java随笔-GC收集器工作机制
  • 研究生招生专业目录 API 接口
  • 2026实测盘点:16款降AI率工具测评,这款让导师都夸“原创性强”!
  • OmenSuperHub终极指南:解锁惠普暗影精灵笔记本的完整性能控制权
  • Linux 神器 tmux 超详细入门教程:会话持久化 + 多窗口管理一网打尽
  • Kani:Rust开源模型检查器,为安全属性提供正确性保证并发现未知漏洞!
  • PyTorch 2.0 静态量化实战:ResNet-18 模型大小压缩 75%,推理速度提升 3 倍
  • LLM大模型 - 大模型及其训练方式
  • React Loadable:给 React 应用做代码分割的老牌方案
  • ResNet-50 PyTorch 迁移学习实战:CIFAR-10 数据集 5 分钟达到 92% 准确率
  • 为知笔记导出到本地 Markdown,老笔记也能重新用起来
  • C语言操作符和输入输出函数
  • HTML打包EXE多实例共享进程:多开更快还能共享登录
  • 从一条用户评论到Browser Bridge的新功能-Tab隔离
  • 基于Java的助老助残服务平台
  • C++之获取内存地址std::addressof
  • AI能改变秋冬服装行业吗?很多企业已经给出了答案
  • 三分钟安装Claude Code 最新版安装教程----简单易懂版本
  • CentOS 企业网络管理入门实战:打通网络理论与服务器实操壁垒
  • 光储充微电网系统降本增效实战指南
  • CV、语言感知(ASR/TTS)、多模态,就能理解AI是如何“看到”与“听到”世界的
  • 2026年TMS系统选型攻略:避开这5个坑,选对系统让运输成本直降20%
  • 微信读书官方 Skill:装完能干什么?
  • Linux的i2c驱动是怎么识别到设备并且匹配设备的
  • 免费解锁Wand专业版完整功能:开源增强工具完全指南
  • TC78H651AFNG与MK64FN1M0VDC12的直流有刷电机驱动方案解析
  • 已知链中心距用节数算中间电机摆放位置 常量弧长 三链轮弦长模型算法
  • 网盘直链下载助手完整教程:8大网盘一键获取真实下载链接终极指南
  • BUUCTF rsa
  • 【1985-2025年】城市/农村/乡村/城镇边界矢量数据|全球高分辨率|逐年更新|SHP格式