本篇文章给大家谈谈微服务网关做权限验证,以及微服务用户权限校验对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享微服务网关做权限验证的知识,其中也会对微服务用户权限校验进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
微服务权限终极解决方案(spring-cloud-gateway-oauth2)
我们理想的微服务权限解决方案应该是这样的,认证服务负责认证,网关负责校验认证和鉴权,其他API服务负责处理自己的业务逻辑。安全相关的逻辑只存在于认证服务和网关服务中,其他服务只是单纯地提供服务而没有任何安全相关逻辑。
通过认证服务( oauth2-auth )进行统一认证,然后通过网关( oauth2-gateway )来统一校验认证和鉴权。采用Nacos作为注册中心,Gateway作为网关,使用nimbus-jose-jwtJWT库操作JWT令牌。
接下来搭建网关服务,它将作为Oauth2的资源服务、客户端服务使用,对访问微服务的请求进行统一的校验认证和鉴权操作
最后我们搭建一个API服务,它不会集成和实现任何安全相关逻辑,全靠网关来保护它
在此之前先启动我们的 Nacos 和 Redis 服务,然后依次启动 oauth2-auth 、 oauth2-gateway 及 oauth2-api 服务
我这里测试使用的 Docker 跑的单机版的 Nacos
github.com/it-wwh/spring-cloud-gateway-oauth2
微服务的四种认证鉴权方式
1. 单点登录(SSO)
这种方案意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量和重复的工作,当动辄数十个微应用时,这种方案的弊端会更加明显。
2. 分布式 Session 方案
分布式会话方案原理主要是将关于用户认证的信息存储在共享存储中,且通常由用户会话作为 key 来实现的简单分布式哈希映射。当用户访问微服务时,用户数据可以从共享存储中获取。在某些场景下,这种方案很不错,用户登录状态是不透明的。同时也是一个高可用且可扩展的解决方案。这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了。
3. 客户端 Token 方案
令牌在客户端生成,由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份。令牌会附加到每个请求上,为微服务提供用户身份验证,这种解决方案的安全性相对较好,但身份验证注销是一个大问题,缓解这种情况的方法可以使用短期令牌和频繁检查认证服务等。对于客户端令牌的编码方案,Borsos(David Borsos) 更喜欢使用 JSON Web Tokens(JWT),它足够简单且库支持程度也比较好。
4. 客户端 Token 与 API 网关结合
这个方案意味着所有请求都通过网关,从而有效地隐藏了微服务。 在请求时,网关将原始用户令牌转换为内部会话 ID 令牌。在这种情况下,注销就不是问题,因为网关可以在注销时撤销用户的令牌。
9. SpringCloud之权限校验方案
1、保存用户信息 到 服务器内存,用于会话保持
2、jsessionId存储到浏览器的cookie里,登录后每次访问都要 带上这个,与用户信息绑定,如果jsessionId被人盗取,容易遭受csrf 跨域攻击。
3、如果登录用户过多, 服务内保存的session信息 占用内存较大
由于项目组件的变大,往往会把 应用部署多份,再用nginx 做负载均衡,提高系统的并发量。
这时 由服务器来 存储session 就会出现出现问题:
接下来就引入了 分布式session的 方案:
不讲 session信息存储在 服务器内部,引入第三方中间件如redis,mongodb,将session统一放到 第三方中间件这里,然后 再统一从 这取。
因为在微服务应用中,网关是 系统 所有流量的入口。在网关中 进行权限校验,理论上是可行的。
当请求携带登录返回的token时, 请求网关, 由网关来 向认证服务器 发起 校验token 的请求。
但是这样还有一个很重要的问题, 就是下游服务 不做权限校验的话,那么 下游服务 的接口 就完全相当于裸奔的, 别人知道下游服务的接口地址,就可以直接调用, 非常的危险。
所以,在这种方案中,一般 还会加上ip白名单校验, 下游服务 只允许 网关 发过来的请求,其他 来源不明的请求,直接在防火墙 拦截调。以保证, 下游服务的接口 只能网关转发过来并且 是 网关鉴权通过的。
理论上 网关 服务器是不需要进行权限校验的,因为 zuul 服务器没有接口, 不需要从 网关 调用业务接口,网关 只做简单的路由工作。下游系统在获取到 token 后,通过 过滤器把 token 发到认证服务器校验该 token 是否有效,如果认证服务器校验通过就会携带 这个 token 相关的验证信息传回给下游系统,下游系统根据这个返回结果就知道该 token 具 有的权限是什么了。
这种方式 不会有 接口裸奔的风险, 也不用加ip白名单校验,更可以 进行方法级别的校验,粒度更细。
不管 是只在网关层做权限校验,还是只在下游服务做权限校验,在oauth2.0的权限校验模型中, 所有 校验token的过程,都需要与 认证服务器 进行一次 交互, 这点 不太好,多了一次 网络请求。
关于微服务网关做权限验证和微服务用户权限校验的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
微服务网关做权限验证的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于微服务用户权限校验、微服务网关做权限验证的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~