在 ASP.NET Core + Angular 中保护微服务

secuiring Microservices in ASP.NET Core + Angular

我有超过 3 个微服务,Main API contient Identity 和许多其他功能,一个 EDM Micro-service ans 另一个 micro-service ... 我有 angular 作为我的前端。 对于我的主要 API 和我的 angular 从安全到我的 angular 和服务之间的令牌交换,一切都很顺利...... 现在这是我的问题,我想保护我的另外 2 个 API 起诉我的主要 API 令牌,因为据我所知 angular 只能处理一个令牌作为 header(或者有一个解决方案 ?)。 我在互联网上进行了搜索,但没有满足我的要求,或者我错过了一些东西,所以请原谅,我不支持 micro-service。

根据您的要求,您可以为用户和角色创建关系和层次结构。 让我们考虑 2 个微服务,一个是针对客户的,第二个是针对支付的。如果你想访问客户微服务的端点 get/update/delete 客户数据,那么你需要在 HTTP header 中传递适当的角色,这些角色需要绑定到用户。

因此考虑 用户 A 具有 角色 getCustomer、UpdateCustomer、deletecustomer。 User A 只能访问客户微服务端点,不能访问支付微服务端点。

现在在哪里配置这个映射和层次结构?

你需要create/enhance(如果你有微服务)身份微服务为此,它会生成令牌并维护用户和角色之间的关系。

端点将像::

{identityMs}/createUser

{identityMs}/getUser

{identityMs}/getToken

此微服务将提供 access/security 令牌,其中包含如下用户和角色等信息。

{
   "user":"A",
   "roles":[
             "getCustomer",
              "deleteCustomer"
           ]
}

一旦调用到微服务,我们需要对身份微服务进行角色、用户、令牌过期等验证。如果令牌成功验证,您可以在 ms 上执行操作。

从 angular js 应用程序,您需要调用绕过用户名的身份微服务端点,以获取具有该特定端点角色的实际令牌。并在调用实际微服务时传递该令牌。

如果你想调用每个端点,你可以只创建一个用户拥有所有微服务的所有角色。如果您只需要客户微服务端点,您可以创建具有客户微服务特定角色的新用户并生成令牌并调用客户 MS。