微服务的用户授权


12

微服务是否应该负责处理自己的授权,或者您认为最好有一个单独的授权服务,该服务在微服务的全部或子集(在同一业务域内)共享?

对我而言,后者更有意义,因为它使更改,执行策略变得更加容易。它是DRY等。但是,通过各种将其规则转储到一个地方的服务,它也很容易失控,并且还担心网络开销。

有什么想法吗?

Answers:


7

我将使用一个中央的统一身份验证系统,并且对每个微服务都有单独的权限/状态(有点像我尚不能在该堆栈交换站点上投票,但是使用中央堆栈交换身份验证系统时我可能会出现堆栈溢出)。我当前的项目之一将在不久的将来使用这种方法,这将是很好的。先前的开发工作涉及创建符合HIPPA的系统,这需要第二级的授权/身份验证,而从法律上独立但在功能上不可分割的组件中进行菊花链授权非常耗时。与简单的oauth登录或具有appid和x-auth标头的api相比,调试过程所涉及的乐趣要少得多。

使用哪种方法取决于开发路线图的特定要求,但是我将在可能的情况下选择更简单的方法,以避免过多的开销和开发时间/精力。


我们确实使用OAuth2进行身份验证,并且我想遵循相同的原则-即拥有一个具有明确定义的单一职责的中央服务-进行授权,而不是在各个服务之间重复功能和分散逻辑。对我来说,这是对域边界的侵犯。我同意,尽管这意味着我们必须理清服务规则的隔离(ala stackoverflow,程序员等)。
morcmarc 2015年

2
您可能具有被特定于服务的权限所取代的全局权限,如果少数核心微服务使用相同的权限,则很有用。微服务特定的权限可能应该存储在该微服务的应用程序基础结构中,以避免中央身份验证服务的潜在性能问题。
Jonathan Voss 2015年

4

每个微服务都不必执行自己的身份验证,但确实需要执行自己的授权。

资源

这是完全合理的。我假设毫无疑问,中央身份验证。但是授权非常令人困惑。

考虑到微服务的数量可以增长到成百上千,中央授权服务应仅负责列出权限,而不验证这些权限。各个微服务可能必须采用不同的方法来验证权限。

这项中央授权服务可能需要从不同的服务中获取模型,并以不同的方式进行决策,因此一开始看起来可能很简单。但是以后可能会很混乱。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.