.NET微服务授权

时间:2017-04-09 12:46:57

标签: .net authorization microservices

我即将开始一个由几个微服务组成的项目,我正在研究如何实现每个微服务的授权。 我的架构如下: 一个Web项目,由一个带有角度为2的asp.net核心站点组成。每个模块(菜单项及其子菜单)将与微服务进行通信(每个微服务都有一个数据库)。 每个微服务都有自己的权限。例如,MS1将拥有CRUD产品,MS2将拥有CRUD订单等。 我的问题是:

  1. 如上所述,每个微服务都有自己的数据库(例如MS1将保存产品数据库,MS1将保存订单数据库等)。权限怎么样?哪些更好存储?
  2. 微服务不应该与其他微服务共享代码,但我认为执行实际身份验证(IsAlllowed(PermissionType))的代码将在每个微服务中重复。这将导致代码冗余。

2 个答案:

答案 0 :(得分:0)

微服务不应与其他微服务共享功能。它是一个功能单元。如果您的许多服务使用相同的代码,那么将一些公共代码库扩展到各种不同的微服务中并没有错。更好的是 - 在一些库中编写所有公共代码,并让它们全部包含/导入它。

我认为您可能会将代码级别与微服务(功能级别)混淆。

关于身份验证问题:如问题评论中所述,尚不清楚在那里讨论哪个授权。如果您指的是微服务的用户,那么让一个auth-gateway处理所有传入请求然后(一旦授权,将请求重新路由到实际服务)可能是有意义的。从这个意义上说,内部您的云,不需要授权就可以更轻松地进行服务间通信。只有来自外部的请求才需要授权。

或者您可以在每项服务中进行授权。不过,这对我来说没什么意义。如果你采用这种方法,你可以将公共代码(授权或其他任何东西)作为库。

答案 1 :(得分:0)

.NET Core现在仅提供足够的基础结构来将身份验证实现到微服务中。我已经使用.NET Core 3.0实现了一些基本解决方案,您可以从github上获取代码:https://github.com/optiklab/actio_3.0

如果您需要更多示例,我也可以更新代码。 LMK