如何在微服务架构中使用 Azure API 管理设计身份验证和授权策略?

时间:2021-05-29 03:48:10

标签: authentication azure-active-directory jwt authorization azure-api-management

您好,我正在为我的应用程序设计微服务架构。我在 .Net 核心开发了三个微服务。我计划在微服务前面添加 API 管理。当我开始阅读 API 管理文档时,我注意到它也可以处理 Azure AD 身份验证和授权。用户可以使用带有 PKCE 的授权代码流登录到前端 SPA 应用程序。我在下面添加了示例架构。

Sample Architecture Diagram

我在 Azure AD 中注册了三个应用程序,因为出于某些安全和权限原因,我想将所有应用程序分开。 . 早些时候,我有自己的 .Net 核心应用程序作为 API 网关。所以我曾经先获取网关应用程序的令牌,然后使用代表流获取下游微服务的令牌。现在计划引入 API 管理。

<块引用>

如果我使用 API 管理,那么对于我的 SPA 应用程序,我应该得到 令牌但针对哪个微服务?

<块引用>

我可以在 azure AD 中为 Azure API 管理创建一个应用程序吗?我可以使用 SPA 获取此应用程序的令牌吗? 使用授权码流。那么我的 API 管理有没有 使用代表获取每个微服务的令牌的能力 流量?

有人可以帮我设计这个架构吗?任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

<块引用>

如果我使用 API 管理,那么对于我的 SPA 应用程序,我应该获得令牌但针对哪个微服务?

我认为您应该获得一个令牌并针对 APIM 进行授权。然后假设所有这些微服务都在 Azure 中,我将在 APIM 和每个单个 .net 核心应用程序之间使用托管标识。

<块引用>

我可以在 azure AD 中创建一个用于 Azure API 管理的应用吗? 使用授权代码流使用 SPA 获取此应用程序的令牌。然后 我的 API 管理是否有能力为每个 micro 获取令牌 服务使用代表流?

如果你问是否有可能,那么答案是肯定的。


对不起,如果答案太宽泛,但这仅仅是因为问题也很宽泛。这种设置有很多可能性。例如,您可以使用令牌在一个授权服务器调用 APIM 中授权自己,然后在 APIM 内部调用另一个授权服务器以生成后端调用的令牌。或者您可以在 APIM 中建立您将对后端进行匿名调用。或者您在没有令牌的情况下调用 APIM,然后根据某些参数在 APIM 内部生成令牌,然后使用它调用后端。正如您所看到的,场景几乎是无穷无尽的,您必须考虑要实现的目标,然后提出更具体的问题。

相关问题