JAVA技术交流QQ群:170933152
智慧城市:
现在权限这块,这样做:
微服务架构:
网关微服务:sc-gateway
认证微服务:sc-auth
权限微服务:sc-permission
思想:
网关放过http://localhost:80/login、网关的过滤器不去拦截http://localhost:80/login,然后,http://localhost:80/login会被转发
sc-auth这个微服务,进行验证用户名密码,验证成功颁发token,token会包含一些用户信息,比如角色等等,
然后,拿到token,就算登录成功,登录成功,返回一些比如登录的用户的信息,跳转到主页
然后其他人再访问其他的url的时候,每次都会带上token,这个token每次带上,是对ajax大体封装了一下,每次都会带着token,
然后,每次在走这个url之前,会先在网关中,取出token,然后通过fegin,交给一个sc-permission,一个鉴权服务,来判断,
这个用户拥有的角色,有没有这个权限,有就放行,没有就提示,大体一说,后边会整理代码放上
--------------------------------------------------------------------------------------------
微服务的两套认证:
1.身份认证在zuul加filter拦截获取请求user token,校验user token合法性
2.服务认证为内部服务之间通过server token来校验服务调用的合法性
整个流程的大概逻辑:
1.启动认证服务(auth-server),此时会生成user的公钥私钥和服务server的公钥私钥
2.启动其他服务,启动后请求认证服务(auth-server)拿到对应的2套公钥,用于对2种token做解密认证用
整个调用请求通过zuul filter时校验token,zuul会通过启动时拿到的公钥对token认证,通过校验后可以在调用权限管理服务(permission-server)查询当前用户是否有访问此url的权限,在访问permission-server时先请求auth-server获取zuul 的server token,带上server token和user token去请求permission-server,在permission-server里的拦截器会对user token和server token做校验(也是启动的时候拿到那2个公钥),调用其他服务都是这个逻辑,整体大概就是这种调用
用户登录校验生成token的流程,认证服务私钥加密user token和server token
服务启动获取pub key
server token的校验通过server token拿到server信息
整体大概布局