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

时间:2021-05-02 14:19:53

标签: asp.net angular microservices token

我有超过 3 个微服务、包含身份和许多其他功能的主 API、一个 EDM 微服务和另一个微服务......我的前端有 angular。 对于我的主要 API 和我的 angular,从安全性到我的 angular 和服务之间的令牌交换,一切都很顺利...... 现在这是我的问题,我想保护我的其他 2 个 API 起诉我的主要 API 令牌,因为我知道 angular 只能处理一个令牌作为标头(或者有解决方案?)。 我在互联网上进行了搜索,但没有符合我的要求,或者我错过了一些东西,所以对不起,我不使用微服务。

  • 如何保护我的微服务?
  • 如果我使用身份?如何从 angular 处理令牌,因为我会有很多令牌? 我对任何其他提议持开放态度......

1 个答案:

答案 0 :(得分:0)

根据您的要求,您可以为用户和角色创建关系和层次结构。 让我们考虑 2 个微服务,一个用于客户,第二个用于支付。如果你想访问客户微服务的端点来获取/更新/删除客户数据,那么你需要在HTTP头中传递相应的角色,这些角色需要绑定到用户。

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

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

您需要为此创建/增强(如果您有微服务)身份微服务,这将生成令牌并维护用户和角色之间的关系。

端点将像::

{identityMs}/createUser

{identityMs}/getUser

{identityMs}/getToken

此微服务将提供包含用户和角色等信息的访问/安全令牌,如下所示。

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

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

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

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