
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
微服务架构开发是目前大多数软件开发程序员都在使用的一种软件架构方式,下面我们就通过案例分析来了解一下,微服务架构用户权限策略类型。
管理自己的权限
免责声明:自我管理你的权限可能是一个费力的过程。但是,还需要做一些权宜之计,根据特定服务,对权限进行粒度控制。因为你将承担大部分设置工作,所以理解自我管理微服务架构所带来的挑战是值得的。
请记住,用户的权限先与身份验证和授权密切相关。你的权限设置直接影响用户会话从登陆到注销的过程。如果将这些行为扩展到多个用户账户,则会出现一些明显的障碍:
一种应用程序将多个微服务流程统一使用,因此,有必要在权限方面对这些服务进行隔离。必须在后端分别处理用户对每个服务的访问请求。
你必须协调服务级身份验证和授权逻辑与全局逻辑之间的关系;尽管代码重用是可能的,但是它会产生依赖性,终会阻碍系统的灵活性。
微服务必须处理其自身的业务逻辑,并且维护全局权限逻辑存在的单一责任。
HTTP的无状态设计非常适合于服务器和节点的负载平衡,但是为了与有状态登录会话兼容,所需的漏洞会降低服务的可扩展性。
身份验证和授权本质上变得更加复杂,因为支持应用程序功能的交互是多样的。
任何自治权限策略的前提是进行创造性地避开这些限制。有多种方法可以做到这一点,我们现在来探讨一下。
无状态会话管理
微服务通常好是保持无状态。多个容器都为共享的资源池而竞争,尤其是当服务经历了大量的用户活动时。这些使用高峰将产生大量内存需求;因此,无状态请求所需的内存开销要小得多。这些新事物是轻量级和敏捷的。服务器还可以并行处理大量请求,提高了稳定性和性能。这在多个用户同时登陆并访问资源时非常重要。这对所有用户来说都是相同的。
这就是说,我们可以通过三种方式将无状态方法的好处与会话结合起来。
一种是通过使用称为粘性会话(stickysession)的方法,在这个方法中,服务器会处理用户初请求,从而ping任何后续请求。负载均衡器对允许这种情况的发生至关重要,但只允许水平向扩展集群。但是,这种添加机器的实例(而不是通过升级当前机器来向上扩展)更可取,因为它允许成百上千的并发用户会话。当然,这些会话需要基于它们的行为进行身份验证和重复授权。切记,在这种情况下,强制的服务器交换将转储用户会话数据——要求重新登陆并访问授权服务器。
二种是会话复制(sessionreplication),它是在网络上保存用户会话数据并同步的。对用户数据的任何更改将自动推送到所有机器。所以,这种处理用户的方法会消耗更多的资源,通常采用带宽形式。这里有很好的一致性;服务器不会忘记用户的权限,或者忘记一个账户的后端关联。遗憾的是,可扩展性相对有限。
三种是集中式会话存储(centralizedsessionstorage),它将用户凭证和相关数据放在一个共享位置。登录状态保持不透明,这意味着服务器不会将凭证解释为纯文本。这样做对安全性来说是很好的。尽管可以扩展,但是这种方法需要共享存储的保护机制。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。