All Projects → tomsun28 → Bootshiro

tomsun28 / Bootshiro

Licence: mit
springboot+shiro+jwt

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Bootshiro

X Admin
致力于快速开发中小型后台管理系统项目模板(更新中......)
Stars: ✭ 123 (-78.72%)
Mutual labels:  jwt, shiro
Spring Boot Plus
🔥 Spring-Boot-Plus is a easy-to-use, high-speed, high-efficient,feature-rich, open source spring boot scaffolding. 🚀
Stars: ✭ 2,198 (+280.28%)
Mutual labels:  jwt, shiro
Ssm
👅基于RESTful风格的前后端分离的SSM框架,集成了shiro和swagger等框架
Stars: ✭ 141 (-75.61%)
Mutual labels:  jwt, shiro
Shirojwt
API SpringBoot + Shiro + Java-Jwt + Redis(Jedis)
Stars: ✭ 503 (-12.98%)
Mutual labels:  jwt, shiro
Jeeweb Mybatis Springboot
Springboot2.0+redis+SpringMVC+Spring+Mybatis+Mybatis Plus的Java web分布式开发系统;NettySocketIo排队系统/排队模块/排队框架,它是一款具有代码生成功能的智能快速开发平台;是以Spring Framework为核心容器,Spring MVC为模型视图控制器,Mybatis为数据访问层, Apache Shiro/Spring security为权限授权层,Ehcahe/Redis/Hazelcast对常用数据进行缓存,Disruptor作为并发框架,Bootstrap作为前端框架的优秀开源
Stars: ✭ 318 (-44.98%)
Mutual labels:  jwt, shiro
Spring Boot Shiro
Shiro基于SpringBoot +JWT搭建简单的restful服务
Stars: ✭ 1,563 (+170.42%)
Mutual labels:  jwt, shiro
Liugh Parent
SpringBoot+SpringCloud Oauth2+JWT+MybatisPlus实现Restful快速开发后端脚手架
Stars: ✭ 2,112 (+265.4%)
Mutual labels:  jwt, shiro
Parsevip
解析VIP资源,解析出酷狗、QQ音乐、腾讯视频、人人视频的真实地址
Stars: ✭ 105 (-81.83%)
Mutual labels:  jwt, shiro
Springboot Learn
🌹springboot常用框架整合示例,涉及多种网站监控,数据缓存,网络通信,持久层,权限管理,常用工具等
Stars: ✭ 270 (-53.29%)
Mutual labels:  jwt, shiro
Sureness
A simple and efficient open-source security framework that focus on protection of restful api.
Stars: ✭ 254 (-56.06%)
Mutual labels:  jwt, shiro
Pac4j
Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...
Stars: ✭ 2,097 (+262.8%)
Mutual labels:  jwt, shiro
Spring Cloud Cli
基于Spring Cloud实现微服务前后端系统
Stars: ✭ 351 (-39.27%)
Mutual labels:  jwt, shiro
Febs Vue
SpringBoot,Shiro,JWT,Vue & Ant Design 前后端分离权限管理系统(精力有限,停止维护)
Stars: ✭ 2,079 (+259.69%)
Mutual labels:  jwt, shiro
Springboot Learning
基于Gradle构建,使用SpringBoot在各个场景的应用,包括集成消息中间件、前后端分离、数据库、缓存、分布式锁、分布式事务等
Stars: ✭ 340 (-41.18%)
Mutual labels:  jwt, shiro
Buji Pac4j
pac4j security library for Shiro: OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...
Stars: ✭ 444 (-23.18%)
Mutual labels:  jwt, shiro
Jwt Scala
JWT support for Scala. Bonus extensions for Play, Play JSON, Json4s, Circe, uPickle, Spray and Argonaut
Stars: ✭ 549 (-5.02%)
Mutual labels:  jwt
Springmvc Activiti5.16 Shiro
基于SpringMVC+Activiti 5.16 的简单OA,可以用作模版供以后学习用。
Stars: ✭ 503 (-12.98%)
Mutual labels:  shiro
Fastapi React
🚀 Cookiecutter Template for FastAPI + React Projects. Using PostgreSQL, SQLAlchemy, and Docker
Stars: ✭ 501 (-13.32%)
Mutual labels:  jwt
Springboot Shiro
使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例
Stars: ✭ 564 (-2.42%)
Mutual labels:  shiro
Springboot Jwt Starter
A Spring Boot JWT starter kit for stateless and token-based authentication apps.
Stars: ✭ 538 (-6.92%)
Mutual labels:  jwt

此项目正在由sureness替换apache shiro重构进行中,若您需使用apache shiro版本,请见shiro分支

推荐一个全新面向restful api的高性能认证鉴权框架 - sureness

sureness主页 - su.usthe.com
Gitee仓库
Github仓库
欢迎使用star

📫 背景

在主流的前后端分离架构中,如何通过有效快速的认证鉴权来保护后端提供的restful api变得尤为重要。对现存框架,不原生支持restapache shiro, 还是深度绑定spring,较慢性能,学习曲线陡峭的spring security,或多或少都不是我们的理想型。
于是乎sureness诞生了,我们希望能解决这些,提供一个面向restful api无框架依赖,可以动态修改权限多认证策略更快速度易用易扩展的认证鉴权框架。

🎡 介绍

sureness 是我们在深度使用权限框架 apache shiro 之后,吸取其一些优点全新设计开发的一个认证鉴权框架
面向 restful api 的认证鉴权,基于 rbac (用户-角色-资源)主要关注于对 restful api 的安全保护
无特定框架依赖(本质就是过滤器处拦截判断,已有springboot,quarkus,javalin,ktor等集成样例)
支持动态修改权限配置(动态修改配置每个rest api谁有权访问)
支持 websocket ,主流http容器 servletjax-rs
支持多种认证策略, jwt, basic auth, digest auth ... 可扩展自定义支持的认证方式
基于改进的字典匹配树拥有的高性能
良好的扩展接口, 样例和文档

sureness的低配置,易扩展,不耦合其他框架,希望能帮助开发者对自己的项目多场景快速安全的进行保护

🔍 框架对比
~ sureness shiro spring security
多框架支持 支持 需改动支持 不支持
restful api 支持 需改动支持 支持
websocket 支持 不支持 不支持
过滤链匹配 优化的字典匹配树 ant匹配 ant匹配
注解支持 支持 支持 支持
servlet 支持 支持 支持
jax-rs 支持 不支持 不支持
权限动态修改 支持 需改动支持 需改动支持
性能速度 较快 较慢 较慢
学习曲线 简单 简单 陡峭

bootshiro

线上演示
管理系统
druid sql监控 admin/admin Swagger api文档
java doc

  • bootshiro是基于springboot+shiro+jwt的真正restful URL资源无状态认证权限管理系统的后端,前端usthe
  • 区别于一般,提供页面可配置式的,动态的 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之后会自动获取授权菜单)
  • have fun

项目的基础框架设计:

总的长这样:

image1


前端usthe

基于angular5 + angular-cli + typeScript + rxjs + bootstrap + adminLTE,践行angular最佳实践。
过程中node,webpack等有用到过,但我不熟。。。

后端bootshiro

基于springboot + apache shiro + mybatis框架,restful风格api,自定义状态码,json-web-token,druid数据库连接池,swagger文档生成,redis存储refreshtoken和动态秘钥,maven,MD5单向加密和AES双向等。。。

gate -nginx

这个nginx作为反向代理服务器,解决了跨域,真实IP头(现服务器端支持跨域可不用nginx)。另一个nginx作为angular应用服务器,tomcat作为bootshiro的服务器。

反向代理的nginx.conf见: conf

持续集成

流程长这样~:

image2

增加kubernetes支持:
bootshiro.yaml

详细实现技术见另一篇: docker学习

相关文档


部署


1.IDE启动调试

  • fork 项目到自己的仓库(欢迎star^.^)
  • clone 项目到本地 git clone https://gitee.com/yourName/bootshiro.git
  • 用idea导入
  • 更改开发环境mysql数据库和redis地址(前提安装数据库并导入usthe.sql创建数据库usthe)
  • 运行BootshiroApplication
  • bootshiro就可以提供api了 http://localhost:8080
  • 推荐使用postman进行api调试
  • 项目中的postman_test_example.json文件就是postman样例,导入即可

2.docker本地启动

  • fork 项目到自己的仓库(欢迎star^.^)
  • clone 项目到本地 git clone https://gitee.com/yourName/bootshiro.git
  • 更改生产环境mysql数据库和redis地址(前提安装数据库并导入usthe.sql创建数据库usthe)
  • 前提已经存在maven环境,docker环境(docker常用看这里)
  • mvn clean install -Dmaven.test.skip=true打出jar包
  • 在项目目录下 docker build -t bootshiro:1.0 .
  • docker images看是否生成镜像成功
  • 运行 docker run -d -p 8080:8080 --name haiGirl bootshiro:1.0
  • docker ps 就可以看见您的haiGirl了
  • bootshiro就可以提供api了 http://localhost:8080

3.jenkins+docker持续集成持续部署CICD

  • fork 项目到自己的仓库(欢迎star^.^)
  • clone 项目到本地 git clone https://gitee.com/yourName/bootshiro.git
  • 更改生产和开发环境mysql数据库和redis地址(前提安装数据库并导入usthe.sql创建数据库usthe)
  • 搭建CICD环境有点繁琐,看这里最下面
  • 参照搭建完成后,bootshiro对应的jenkins下运行shell:
#!/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`

#使用maven 镜像进行编译 打包出 jar 文件
docker run --rm --name mvn -v /opt/dockerWorkspace/maven:/root/.m2 \
-v /opt/dockerWorkspace/jenkins_home/workspace/$JOB_NAME:/usr/src/mvn -w /usr/src/mvn/ \
tomsun28/maven:1.0 mvn clean install -Dmaven.test.skip=true

#使用放在项目下面的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 8085:8080 --name $JOB_NAME -v /opt/dockerWorkspace/tomcat/$JOB_NAME/logs:/opt/tomcat/logs $TAG


仓库

gitee(main rep):

bootshiro
usthe

github:

bootshiro
usthe

。。。。。持续同步更新。。。。

======================================

欢迎一起完善哦^^



效果展示

image4

image5

image6

image7

thanks:

Howieair的小猪图标
zhangkaitao的跟我学shiro
网络上前辈们的教程文章开源项目

Thanks Open Source license support by jetBrains Open Source

Giteye chart

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].