0_springboot_shiro_jwt_多端认证鉴权_前言

1. 场景

现在对于企业级Java后端应用SpringBoot是标配了,而且大多都是前后端分离的形式。实际项目中,遇到了一个后端服务,需要为多个端点提供服务,比如:管理后台,微信小程序,移动端App(andorid, ios),桌面客户端等等。正常情况下可以为每一个端提供一套后端服务,但有很多端多数情况下有相同的业务逻辑,为了开发方便,索性就将所有端点的访问都集中到一套后端应用中。生产环境下,将后端一集群方式部署,所有端的请求都先通过 API网关,API网关再将请求路由到后端应用上。

那么现在的问题是:每个端认证,鉴权的方式都不一样。比如客户端用户,小程序用户与管理后台用户会存放到不同的表中,登录的方式也有多种多样,如:账号密码登录,Emai登录,微信扫码授权登录,手机号+验证码登录,指纹识别登录等等。有些端使用有状态的会话管理,有些端需要使用无状态的会话管理,需要用一个后端服务来应付所有端的需要。

2. 实现思路

Apache Shiro是一个强大的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro相对简单,因为开源,所以很容易对Shiro进行改造,达到我们想要的目标。

服务端与各个客户端之间全部统一使用无状态的会话管理,将Shiro中token 替换成 JWT(Json Web Token) , 实现无状态的会话管理。这需要对Shiro进行扩展。

要扩展Shiro就必须先了解它的概念和内部运行机制,也需要对JWT有所了解。本系列会分成多个章节一步一步实现最终想要的效果。每个章节会由浅入深讲解概念,用代码来理解运行机制。甚至会有一些源码的分析。

相关推荐
水深火乐9 小时前
安全地生成验证码、密码和 Token
后端
小强198810 小时前
SQL Server 慢查询怎么定位?一套从“卡”到“快”的完整排查流程
后端
水深火乐10 小时前
interface和any
后端
步行cgn10 小时前
MyBatis Error evaluating expression ‘ids‘. Return value (3) was not iterable 错误详
java·后端
神奇小汤圆10 小时前
Spring Boot + LangChain4j实现RAG——从零搭建企业级知识库问答系统
后端
H_Peak10 小时前
Python运算符与流程控制:if条件判断
后端
H_Peak10 小时前
Python字符串操作:从基础到正则入门
后端
自进化Agent智能体10 小时前
Hermes 子代理委派 —— 并行工作的艺术
后端
步行cgn10 小时前
MyBatis 动态 SQL 中的 <foreach> 标签完全解析
后端
lhldsg10 小时前
社区健身场地规划实战指南:从器材配置到智能化管理经验分享
java·开发语言·经验分享·小程序