Java架构-SpringCloud分布式架构权限管理

发布时间:2025-09-02 点击:5
本文讨论分布式架构权限管理的两种情况,一种是针对统一授权访问的,一种是跨平台接口访问的。
虽然分布式架构会做业务的切割,将整体的业务切割为独立的子业务或者子平台,但是同一平台下往往会有统一的授权和单点登录,客户端而言平台是整体的,这种是统一授权访问的权限管理。但是也会遇到多平台协作的情况,这种情况不用考虑其他平台的架构,只需要为其提供数据接口跟其对接就可以,这种情况就要考虑跨平台接口访问的权限管理。
一、统一授权访问
前端采用web服务器,nginx或者haproxy之类的都可以,利用nginx做第一层反向代理,用zuul做第二层反向代理,两层反向代理对于常见的网络渗透和爬虫基本可以轻松应对。在这个前提下,我们处理接口授权和访问安全等问题,而且需要从客户端和服务端都进行安全控制。
1、用户通过用户名、密码发起登陆请求,这里可以配合验证码、短信验证、微信验证等提高安全级别,登陆请求访问到权限中心的zuul。
2、由zuul反向代理到权限中心的service。
3、查询用户、角色信息,进行查询匹配。
4、有查询结果以后反馈,反馈用户状态,用户、角色、权限信息等。
5、生产token,token的算法需要自己编写,建议加入时间戳等信息进行加密。存放在session或者直接放入redis中,一般建议放入session中,因为分布式架构要做session共享,必须有一个session共享池,session共享池一般会用redis来做,而session可以利用sessionid,确认唯一用户,比较方便。
6、返回给客户端用户、角色、权限信息。
7、浏览器客户端通过得到的用户、角色、权限信息进行前端功能和菜单的渲染,隐藏非授权的功能,并且可以基于这些信息做前端的校验,但是这种校验由于都在客户端,很容易被人篡改,只能做一些基本防护,但是这是必要的。
8、浏览器客户端发送业务请求到服务端,请求会附带客户端菜单或者功能的权限信息,服务端通过zuul的拦截器拦截业务请求,访问session共享池。
9、然后通过sessionid得到token信息,通过我们的token算法进行解密,得到用户、角色、权限信息。
10、进行匹配校验,查看本次请求是否有接口访问权限,校验通过就可以访问接口,校验不通过就不能访问。
二、跨平台接口访问
这里的接口是指一下跨平台的接口服务,类似webservice这样,没有单点登录,没有统一的授权,往往是其他平台跟我们平台进行远程交互的,这些往往两个平台不是统一的公司或部门,所以接口不是长期使用的,有一定的时间限制。
1、用户管理员配置外部客户端用户及其权限信息。
2、添加用户信息、权限信息到用户数据库之中。
3、外部客户端接口如果没有token,需要先发送授权请求到权限中心。
4、权限中心通过验证是否配置外部客户端用户,并且取得该用户的权限信息,校验通过以后通过加密算法生产token,这里的token根据实际情况,如果安全要求高最好加入时间戳,让token过期作废,让对方重新请求。
5、将token存入redis中,形成token共享池,这里由于没有浏览器的sessionid,所以存放在session中意义不大。
6、返回token给客户端。
7、客户端拿到token以后发送业务请求给业务接口地址。
8、业务接口通过zuul拦截请求,并且将token跟redis的token进行比对。
9、比对成功以后,对token进行解密,然后看是否有接口授权。
10、如果有接口授权则通过,访问接口,如果没有则不能访问。
java高级资料需要自己领取,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo高并发分布式等教程!!!


丽水网站推广需避免哪些误区?
反向链接对搜索引擎优化的影响
看完这些电商运营技巧让你电商购物节中突出重围
网站建设中网站地图制作的重要性有哪些?
告诉你网站建设初期该如何做SEO优化工作
网站制作大师怎样能练成的
苏州SEO网站优化的过程中有哪些操作是不能做的?
影响内江SEO网站优化的运营因素