> 文章列表 > SpringSecurity之微服务权限解决方案

SpringSecurity之微服务权限解决方案

SpringSecurity之微服务权限解决方案

目录

前置知识点

什么是微服务

微服务的优劣

优点

缺点

微服务本质

微服务认证与授权实现思路

认证预授权的过程


前置知识点

什么是微服务

微服务(或称微服务架构)是一种云 原 生 架构方法,在单个应用中包含众多松散耦合而且可单独部署的小型组件或服务。

这些服务通常拥有自己的技术栈,包括数据库和数据管理模型; 通过一个 rest api、事件流和 消 息 代 理组合彼此通信;以及 按照业务能力进行组织,具有通常称为有界上下文的服务分隔线。

微服务的优劣

优点

1、降低了耦合度:把模块拆分,使用接口通信,降低模块之间的耦合度。

2、责任清晰: 把项目拆分成若干个子项目,不同的团队负责不同的子项目。

3、扩展方便: 增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。

4、部署方便:可以灵活的进行分布式部署。提

5、高代码的复用性: 比如 service 层,如果不采用分布式 REST 服务方式架构就会在PC,Android,IOS 每个端都要写一个 service 层逻辑,开发量大,难以维护一起升级,这时候就可以采用分布式 REST 服务方式,公用一个 service 层。

缺点

系统之间的交互要使用远程通信,接口开发增大工作量,但是利大于弊。

微服务本质

1、微服务,关键其实不仅仅是微服务本身,而是系统要提供一套基础的架构,这种架构 使得微服务可以独立的部署、运行、升级,而且,这个系统架构还让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。这种所谓的“统一整体”表现出来的是统一风格的界面,统一的权限管理,统一的安全策略,统一的上线过 程,统一的日志和审计方法,统一的访问入口,统一的调度方式等等。

2、微服务的目的是有效的拆分应用,实现敏捷开发和服务部署。

微服务认证与授权实现思路

接下来就是今天的重点,我们看一下。在微服务中如何实现我们想要的认证与授权呢?

认证预授权的过程

 (1)基于 Session,此时SpringSecurity 会对 cookie 里面的 sessionid 解析操作,找到服务器存储的 session 信息,然后判断当前用户是否符合请求的要求。

(2)另一种是基于token信息,这样就会解析出 token,然后将当前请求加入到 SpringSecurity 管理的权限信息中

假如我们的系统中模块众多,而且每个模块都需要进行认证和授权,那么我们应该选择基于token 的形式来进行认证与授权,当然作为用户还是据用户名密码完成认证功能,然后获取当前用户自己的角色以及此角色的一系列权限值,我们可以将用户名作为key的一部分,权限列表作为value将其存放到redis缓存中去,根据用户名相关信息生成token后返回,浏览器将token记录在cookie中,后续每次调用api接口都默认将token携带进header请求头中,SpringSecurity获取到header头中的头肯信息,然后解析数据,解析到token后获取当前用户名,根据用户名生成key就可以从redis缓存中获取权限列表,这样 SpringSecurity就能够判断当前请求是否有权限访问了。

好了,关于微服务的相关信息以及权限方案就到这里。

欢迎大家点击下方卡片,关注《coder练习生》