永发信息网

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

答案:1  悬赏:80  手机版
解决时间 2021-04-26 17:37
如何解决微服务架构中的身份验证问题
最佳答案
在传统的单体架构中,单个服务保存所有的用户数据,可以校验用户,并在认证成功后创建HTTP会话。在微服务架构中,用户是在和服务集合交互,每个服务都有可能需要知道请求的用户是谁。一种朴素的解决方案是在微服务系统中应用与单体系统中相同的模式,但是问题就在于如何让所有的服务访问用户的数据。解决这个问题大致两个思路:若使用共享用户数据库时,更新数据库表会成为一个难题,因为所有服务必须同时升级以便能够对接修改后的表结构;若将相同的数据分发给所有服务时,当某个用户已经被认证,如何让每个服务知晓这个状态是一个问题。
Borsos指出,单点登录(SSO)方案可能看起来是一个好主意,但这意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量,同时这个方案实现起来也相当复杂 。 在其他方面,选择SSO方案安全性会很好,用户登录状态是不透明的,可防止攻击者从状态中推断任何有用的信息。
分布式会话方案,原理主要是将关于用户认证的信息存储在共享存储中,且通常由用户会话作为key来实现的简单分布式哈希映射。 当用户访问微服务时,用户数据可以从共享存储中获取。 该解决方案的另一个优点是用户登录状态是不透明的。 当使用分布式数据库时,它也是一个高度可用且可扩展的解决方案。 这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了。
客户端令牌方案, 此令牌在客户端生成,由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份。 令牌会附加到每个请求上,为微服务提供用户身份验证。 这种解决方案的安全性相对较好,但身份验证注销是一个大问题, 缓解这种情况的方法可以使用短期令牌和频繁检查认证服务等。 对于客户端令牌的编码方案,Borsos更喜欢使用JSON Web Tokens(JWT),它足够简单且库支持程度也比较好。
客户端令牌与API网关结合,这个方案意味着所有请求都通过网关,从而有效地隐藏了微服务。 在请求时,网关将原始用户令牌转换为内部会话ID令牌。 在这种情况下,注销就不是问题,因为网关可以在注销时撤销用户的令牌。 这种方案虽然库支持程度比较好,但实现起来还是可能很复杂。
Borsos建议使用客户端令牌(使用JWT)和API网关结合的方案,因为这个方案通常使用起来比较容易,且性能也不错。 SSO方案虽然能满足需求,但他认为还是应该避免使用。若分布式会话方案所需要的相关技术已经应用在你的场景上,那么这个方案也是比较有趣的。他同时强调在选择解决方案时应着重考虑注销的重要性。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
某同学身高1.6米,从路灯正下方远离路灯,向
怎么样才能让一个很野的女孩听话并且她不会不
中国有多少省份?(除直辖市,自治区)
在武汉有做电动车防雨遮阳篷的朋友吗?
欧洲的大河流?
高中毕业后的学生,为什么都向往大学生活?
人为什么要有所差别?
问问删除别人回答的自己扣经验吗?
FIFAOL2的数据怎么还没更新?
QQ三国满级多少
有x,y,z三种原子,已知它们核内种子数分别是1
怎样过生日才是最快乐、最难忘、最有意义?
描写花生优美的句子,描写花生的好词佳句
竞速汽车音响改装俱乐部
暮光僚胜百千万
推荐资讯
N8的像素怎么样?
大於这个地址在什么地方,我要处理点事
通过二手车买卖开的发票怎样将交税
描写秋天荷塘的句子,描写秋天荷塘的伤感句子
求有关天空或海的文字最好是诗歌的,伤感点,做
琪雅美容健康万店连锁我想知道这个在什么地方
求3.3.5版本術士宏(詳情進來看)
怎样学好生物化学?
诛仙2 赚J的问题
乌审旗新概念幼儿园我想知道这个在什么地方
梦见因我们知道我先生的隐私,他把我姐家的女
法恩莎卫浴和箭牌卫浴怎么样?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?