vue项目接口域名动态的获取方法
402
2022-12-29
本文目录一览:
从单体应用架构到分布式应用架构再到微服务架构微服务网关做认证,应用微服务网关做认证的架构通过不停微服务网关做认证的改进升级的方式满足不断扩大的业务需求。随着应用架构的改变微服务网关做认证,身份认证的方式也在发生变化,为了适应架构的变化、需求的变化,身份认证与鉴权方案也需要不断的变革。
在传统单体应用架构中,身份认证从来都不是问题,简单粗暴的通过一个权限的拦截器,配合session基本都解决了微服务网关做认证!(这里简单说说session, 因为Http协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;session的主要目的就是为了弥补Http的无状态特性。简单的说,就是服务器可以利用session存储客户端在同一个会话期间的一些操作记录。)
在于分布式应用架构中,也有很多处理方式,最流行无非以下几种:
接下主要聊聊在微服务架构中的一些方案和个人理解
采用单点登录方案,意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量,同时这个防范实现起来也相当的复杂,同时重构相当麻烦,因为需要兼容所有系统。在其他方面,选择SSO方案安全性会很好,用户登录状态是不透明的,可防止攻击者从状态中推断任何有用的信息。
分布式会话方案原理主要是将关于用户认证的信息存储在共享存储中,且通常由用户会话作为 key 来实现的简单分布式哈希映射。当用户访问微服务时,用户数据可以从共享存储中获取。在某些场景下,这种方案很不错,用户登录状态是不透明的。同时也是一个高可用且可扩展的解决方案。这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了。
令牌在客户端生成,由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份。令牌会附加到每个请求上,为微服务提供用户身份验证,这种解决方案的安全性相对较好,但身份验证注销是一个大问题,缓解这种情况的方法可以使用短期令牌和频繁检查认证服务等。对于客户端令牌的编码方案,Borsos 更喜欢使用 JSON Web Tokens(JWT),它足够简单且库支持程度也比较好。
这个方案意味着所有请求都通过网关,从而有效地隐藏了微服务。 在请求时,网关将原始用户令牌转换为内部会话 ID 令牌。在这种情况下,注销就不是问题,因为网关可以在注销时撤销用户的令牌。
若对过期要求不高的场景,可以不使用Redis,直接使用 JWT 的过期时间即可
登录流程:
验证流程:
随着微服务网关做认证我们的微服务越来越多微服务网关做认证,如果每个微服务都要自己去实现一套鉴权操作微服务网关做认证,那么这么操作比较冗余,因此微服务网关做认证我们可以把鉴权操作统一放到网关去做,如果微服务自己有额外的鉴权处理,可以在自己的微服务中处理。
1、在网关层完成url层面的鉴权操作。
2、将解析后的jwt token当做请求头传递到下游服务中。
3、整合Spring Security Oauth2 Resource Server
1、搭建一个可用的认证服务器, 可以参考之前的文章.
2、知道Spring Security Oauth2 Resource Server资源服务器如何使用, 可以参考之前的文章.
自定义授权管理器,判断用户是否有权限访问
此处微服务网关做认证我们简单判断
1、放行所有的 OPTION 请求。
2、判断某个请求(url)用户是否有权限访问。
3、所有不存在的请求(url)直接无权限访问。
1、 客户端 gateway 在认证服务器拥有的权限为 user.userInfo
3、在网关层面,findAllUsers 需要的权限为 user.userInfo ,正好 gateway 这个客户端有这个权限,所以可以访问。
演示GIF
https://gitee.com/huan1993/spring-cloud-alibaba-parent/tree/master/gateway-oauth2
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~