欢迎对 Sureness 了解使用,开源不易,觉得不错给个star鼓励哦!
也欢迎对Sureness有兴趣的朋友一起贡献开发,QQ交流群:390083213
在主流的前后端分离架构中,如何通过有效快速的认证鉴权来保护后端提供的REST API
变得尤为重要。对现存框架,不原生支持RESTful
的Apache Shiro
,
还是深度绑定Spring
的Spring Security
,或多或少都不是我们的理想型。
于是乎Sureness
诞生了,我们希望能解决这些,提供一个面向REST API,无框架依赖,可以动态修改权限,多认证策略,更快速度,易用易扩展的认证鉴权框架。
Sureness 是我们在深度使用
Apache Shiro
之后,吸取其优点全新设计开发的一个认证鉴权框架
面向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
的低配置,易扩展,不耦合其他框架,希望能对系统多场景快速安全的保护
~ | sureness | shiro | spring security |
---|---|---|---|
多框架支持 | 支持 | 需改动支持 | 不支持 |
restful api | 支持 | 需改动支持 | 支持 |
websocket | 支持 | 不支持 | 不支持 |
过滤链匹配 | 优化的字典匹配树 | ant匹配 | ant匹配 |
注解支持 | 支持 | 支持 | 支持 |
servlet | 支持 | 支持 | 支持 |
jax-rs | 支持 | 不支持 | 不支持 |
权限动态修改 | 支持 | 需改动支持 | 需改动支持 |
性能速度 | 较快 | 较慢 | 较慢 |
学习曲线 | 简单 | 简单 | 陡峭 |
usthe
是restful URL
资源无状态认证权限管理系统的前端,基于angular+typeScript+adminLte
,后端bootshiro
restful api
安全管理支持jwt
过期刷新,用户操作监控等 加固应用安全api
后,需要在前端页面 资源配置->API管理 新增基于ant
匹配风格的api
(约定没有配置的api没有保护)eg:
获取角色关联的对应用户列表 rest-url
为 /role/user/{roleId}/{currentPage}/{pageSize}
访问方式为GET
, 您需要在页面新增api:
/role/user/*/*/*
GET
方式url
匹配链约定为 url=
url+"=="+httpMethod
api
后,您需要在 资源配置->角色管理 配置您想要授权角色的API,菜单,关联用户等资源(约定授权给auth_anon
角色的api
可以被所有人访问,,注意没有授权给任何角色的api是可以被任何人访问的)sessionStorage
防止重复获取,您授权变更菜单之后想要看的效果需要关闭页面重新打开(或者清除sessionStorage
之后会自动获取授权菜单)总的长这样:
基于angular5 + angular-cli + typeScript + rxjs + bootstrap + adminLTE
,践行angular最佳实践。
过程中node,webpack等有用到过,但我不熟。。。
基于springboot + apache shiro + mybatis
框架,restful风格api,自定义状态码,json-web-token,druid数据库连接池,swagger文档生成,redis存储refreshtoken和动态秘钥,maven,MD5单向加密和AES双向等。。。
这个nginx作为反向代理服务器,解决了跨域,真实IP头(现服务器端支持跨域可不用nginx)。另一个nginx作为angular应用服务器,tomcat作为bootshiro的服务器。
反向代理的nginx.conf见: conf
流程长这样~:
详细实现技术见另一篇: docker学习
0.安装nginx(可选)
1.IDE启动调试
这个本地开发环境部署现可以去掉nginx,但生产环境最好还是要有的
2.docker本地部署
3.jenkins+docker持续集成持续部署CICD
#!/bin/bash
#build in jenkins sh
#docker docker hub仓库地址,之后把生成的镜像上传到 registry or docker hub
REGISTRY_URL=127.0.0.1:5000
#docker login --username tomsun28 --password xxxx
#根据时间生成版本号
TAG=$REGISTRY_URL/$JOB_NAME:`date +%y%m%d-%H-%M`
#使用放在项目下面的Dockerfile打包生成镜像
docker build -t $TAG $WORKSPACE/.
docker push $TAG
docker rmi $TAG
#判断之前运行的容器是否还在,在就删除
if docker ps -a | grep -i $JOB_NAME;then
docker rm -f $JOB_NAME
fi
#用最新版本的镜像运行容器
docker run -d -p 4200:80 --name $JOB_NAME $TAG
gitee:
github:
。。。。。持续同步更新。。。。
======================================
欢迎一起完善哦^^
thanks:
Howieair的小猪图标
zhangkaitao的跟我学shiro
网络上前辈们的教程文章开源项目
Thanks Open Source license support by
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型