面向REST API的高性能认证鉴权框架Sureness

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个面向REST API的高性能认证鉴权框架——Sureness。

在主流的前后端分离架构中,如何通过有效快速的认证鉴权来保护后端提供的REST API变得尤为重要。对现存框架,不原生支持RESTful的Apache Shiro, 还是深度绑定Spring的Spring Security,或多或少都不是我们的理想型。

于是乎Sureness诞生了,我们希望能解决这些,提供一个面向REST API,无框架依赖,可以动态修改权限,多认证策略,更快速度,易用易扩展的认证鉴权框架。


功能特性

  • 基于 RBAC (用户-角色-资源)主要关注于对 API 的安全保护
  • 无特定Web框架依赖(已有 Spring Boot、Quarkus、Javalin、Ktor、Micronaut、Jfinal、Solon 等集成样例)
  • 支持动态修改权限配置(动态修改配置每个 API 谁有权访问)
  • 支持 Websocket,主流 HTTP 容器 Servlet 和 JAX-RS
  • 支持多种认证策略,JWT、Basic Auth、Digest Auth ... 可扩展自定义认证方式
  • 基于改进的字典匹配树拥有的高性能
  • 良好的扩展接口,样例和文档助急速理解扩展使用


对比


Sureness

Shiro

Spring Security

多框架支持

支持

需改动支持

不支持

REST API

支持

需改动支持

支持

Websocket

支持

不支持

不支持

过滤链匹配

优化的字典匹配树

ant匹配

ant匹配

注解支持

支持

支持

支持

Servlet

支持

支持

支持

JAX-RS

支持

不支持

不支持

权限动态修改

支持

需改动支持

需改动支持

性能速度

较快

较慢

较慢

学习曲线

简单

简单

陡峭


架构设计

高性能匹配:

处理流程:

集成案例

Springboot项目集成-配置文件方案:

  • 基于springboot
  • 从默认的配置文件sureness.yml加载账户信息、资源角色、过滤资源等信息
  • 使用默认的sureness-config
  • 使用默认的JWT、Basic Auth、Digest Auth方式认证鉴权
  • 保护入口:SurenessFilterExample
  • 推荐使用postman测试,测试样例为sample-bootstrap-postman.json,导入postman即可

仓库地址:https://github.com/dromara/sureness/tree/master/sample-bootstrap


Springboot项目集成-数据库方案:

  • 基于springboot、jpa等
  • 自定义数据源,使用从数据库加载账户信息、资源角色、过滤资源等信息,这样便于动态调整(见AccountProvider ResourceProvider)
  • 除了使用了默认的JWT,Basic Auth方式认证鉴权,新增自定义认证鉴权(自定义subject subjectCreator processor...)
  • 推荐使用postman测试,测试样例为sample-tom-postman.json,导入postman即可

仓库地址:https://github.com/dromara/sureness/tree/master/sample-tom


Quarkus项目集成:

  • 基于quarkus,jax-rs
  • 从默认的配置文件sureness.yml加载账户信息、资源角色、过滤资源等信息
  • 使用默认的sureness-config
  • 使用默认的JWT、 Basic Auth、Digest Auth方式认证鉴权
  • 例子中包含REST API
  • 保护入口:SurenessFilterExample
  • 推荐使用postman测试

仓库地址:https://github.com/dromara/sureness/tree/master/samples/quarkus-sureness


Spring-Webflux项目集成:

  • 基于spring-webflux
  • 自定义 subject creator (BasicSubjectReactiveCreator、JwtSubjectReactiveCreator、NoneSubjectReactiveCreator) 适配 ServerHttpRequest 请求体
  • 从默认的配置文件sureness.yml加载账户信息、资源角色、过滤资源等信息
  • 使用默认的JWT,Basic Auth方式认证鉴权
  • 例子中包含REST API
  • 保护入口:SurenessFilterExample
  • 推荐使用postman测试

仓库地址:https://github.com/dromara/sureness/tree/master/samples/spring-webflux-sureness


Ktor项目集成:

  • 基于ktor, servlet
  • 从默认的配置文件sureness.yml加载账户信息、资源角色、过滤资源等信息
  • 使用默认的sureness-config
  • 使用默认的JWT、 Basic Auth、Digest Auth方式认证鉴权
  • 例子中包含REST API
  • 保护入口:Application.kt
  • 推荐使用postman测试

仓库地址:https://github.com/dromara/sureness/tree/master/samples/ktor-sureness


—END—

开源协议:Apache2.0

开源地址:https://github.com/dromara/sureness

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章