问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何解决微服务架构中的身份验证问题

发布网友 发布时间:2022-04-19 14:37

我来回答

1个回答

热心网友 时间:2022-06-03 20:58

展开1全部在传统的单体架构中,单个服务保存所有的用户数据,可以校验用户,并在认证成功后创建HTTP会话。在微服务架构中,用户是在和服务集合交互,每个服务都有可能需要知道请求的用户是谁。一种朴素的解决方案是在微服务系统中应用与单体系统中相同的模式,但是问题就在于如何让所有的服务访问用户的数据。解决这个问题大致两个思路:若使用共享用户数据库时,更新数据库表会成为一个难题,因为所有服务必须同时升级以便能够对接修改后的表结构;若将相同的数据分发给所有服务时,当某个用户已经被认证,如何让每个服务知晓这个状态是一个问题。
Borsos指出,单点登录(SSO)方案可能看起来是一个好主意,但这意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量,同时这个方案实现起来也相当复杂 。 在其他方面,选择SSO方案安全性会很好,用户登录状态是不透明的,可防止攻击者从状态中推断任何有用的信息。
分布式会话方案,原理主要是将关于用户认证的信息存储在共享存储中,且通常由用户会话作为key来实现的简单分布式哈希映射。 当用户访问微服务时,用户数据可以从共享存储中获取。 该解决方案的另一个优点是用户登录状态是不透明的。 当使用分布式数据库时,它也是一个高度可用且可扩展的解决方案。 这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了。
客户端令牌方案, 此令牌在客户端生成,由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份。 令牌会附加到每个请求上,为微服务提供用户身份验证。 这种解决方案的安全性相对较好,但身份验证注销是一个大问题, 缓解这种情况的方法可以使用短期令牌和频繁检查认证服务等。 对于客户端令牌的编码方案,Borsos更喜欢使用JSON Web Tokens(JWT),它足够简单且库支持程度也比较好。
客户端令牌与API网关结合,这个方案意味着所有请求都通过网关,从而有效地隐藏了微服务。 在请求时,网关将原始用户令牌转换为内部会话ID令牌。 在这种情况下,注销就不是问题,因为网关可以在注销时撤销用户的令牌。 这种方案虽然库支持程度比较好,但实现起来还是可能很复杂。
Borsos建议使用客户端令牌(使用JWT)和API网关结合的方案,因为这个方案通常使用起来比较容易,且性能也不错。 SSO方案虽然能满足需求,但他认为还是应该避免使用。若分布式会话方案所需要的相关技术已经应用在你的场景上,那么这个方案也是比较有趣的。他同时强调在选择解决方案时应着重考虑注销的重要性。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
[PPT模板]SolidWorks 如何修改SW图框模板 详细�0�3 胆结石的护理 胆结石的护理措施_胆结石注意事项及饮食 胆结石术后的症状和护理 急性支气管炎吃什么水果好 急性支气管炎吃什么水果 小刚走进教室。小刚马上拿出书读课本。用什么关联词连成一句话 不锈钢的发热管好一点还是铜管好一点 不锈钢合金热管的优缺点 鼠币、泰山币、建国币表现亮眼 苹果手机的备忘录存放在哪个文件夹里 经常在微信上给你发哪些话的人,不值得深交? 女生微信上给我发“滴滴”是什么意思 微信上给对方发微信不回,过了十多分钟却发现对方... 为什么微信上面给某个人发信息发不过去? 你在微信上给一个朋友留言,但是他不回复你,这算... 微信上给对方发一句话,为什么??显示消息已发送... 如何在微信上给所有人发信息 如何在微信上转账给别人 在微信上给信用卡还钱安全吗? 微信上给对方发了消息怎样才知道对方看没看到 微信上给对方发消息,对方一直不回,这算什么情况? 苹果手机的备忘录存放在哪个文件夹里? 天猫精灵方糖可以收听广播电台的节目吗 请问天猫精灵如何连接电视机?求方法和步骤?(我... 康佳电视led65R2可以连接天猫精灵吗 用天猫精精灵播放电视声音 天猫精灵cc6可以看电视吗 索尼电视支持天猫精灵吗 天猫精灵是什么电视都能连接吗 微服务架构 如何影响传统的软件架构设计 如何委婉的问一个男生他有没有女朋友? 怎样知道一个男生有没有女朋友,怎样追男生? 怎么委婉的问喜欢的男生有没有女朋友? 怎样试探一个男生有没有女朋友 怎么问男生有没有女朋友 怎么知道男生有没有女朋友 如何机智地问男生有没有女朋友? 怎么问一个不联系男生有没有女朋友 怎么确定男生有没有女朋友 怎么问陌生男生有女朋友吗 怎样隐晦地问男生有没有女朋友 怎样间接问一个男生有没有女朋友 想知道自己喜欢的人有没有女朋友,该怎么做呢? 怎么知道喜欢的男生有没有女朋友 如何委婉的问喜欢的男生是否有女朋友??求大神帮助? 如何委婉的向一个不认识的男孩子问有没有女朋友 想问问大家怎么才能知道暗恋的男孩子有没有女朋友? 怎么委婉地问男生有没有女朋友? 在深圳找兼职日语翻译或日语老师工作,在哪能找到?