你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure API 管理和 Azure AD B2C 保护后端 API

Azure API 管理
Microsoft Entra 外部 ID
Azure Front Door

解决方案构想

本文介绍了一种解决方案构想。 云架构师可以通过本指南来帮助可视化此体系结构的典型实现的主要组件。 以本文为起点,设计一个符合工作负荷特定要求的架构合理的解决方案。

本文介绍了一种体系结构,它使用 API 管理和 Azure Active Directory (Azure AD) B2C 来验证持有者令牌,从而保护 Azure 和其他环境中的后端 API。

体系结构

体系结构关系图,通过使用 API 管理和 Azure AD B2C 验证持有者令牌来保护后端 API。API 可以位于 Azure 或其他环境中。

下载此体系结构的 Visio 文件

数据流

  1. 为了获得应用程序的访问权限,API 客户端通过提供用户名和密码等凭据进行身份验证。 此解决方案中,IdP 是 Azure AD B2C,但你可以使用其他的 IdP。

  2. 身份验证请求通过 Azure Front Door 转到 Azure AD B2C,Azure AD B2C 配置了用于登录的自定义域。 Azure AD B2C 对用户进行身份验证,并将 JSON Web 令牌 (JWT) 持有者令牌返回给用户。

  3. 客户端触发访问后端 API 的事件。 此事件可以是单击 Web 应用程序或移动设备上的按钮,也可以是直接调用后端 API 的终结点。

  4. 请求会通过 Azure Front Door,其后端映射到 API 管理的公共终结点。 API 管理使用其 validate-jwt 策略截获请求,并向 Azure AD B2C 验证持有者令牌。 如果令牌无效,API 管理通过响应 401 代码来拒绝请求。

  5. 如果令牌有效,API 管理将请求转发到相应的后端 API。

    此图显示了在三个环境中运行的后端 API:

    • 应用服务环境
    • 函数应用
    • Azure Kubernetes 服务 (AKS)

    如果在 API 与 API 管理之间建立了网络连接,则在本地和混合云环境中运行的 API 也可以与 API 管理集成。

组件

  • Azure 虚拟网络提供 Azure 资源(例如虚拟机 (VM) )之间的安全通信。 它还提供对 Internet 和本地网络的访问权限。
  • Azure Front Door 是一种现代云内容分发网络 (CDN) 服务,可为 Web 内容和应用程序提供高性能、可伸缩性和安全的用户体验。 它提供第 7 层功能(如 SSL 卸载、基于路径的路由、快速故障转移和缓存),可提升应用程序的性能和可用性。
  • Azure 应用程序网关是一种第 7 层负载均衡器,可用于管理发往 Web 应用程序的流量。
  • API 管理是一种可将 API 发布到外部和内部客户端的统包式解决方案。 它提供有助于管理面向公众的 API 的功能,包括速率限制、IP 限制,以及使用 Microsoft Entra ID 或其他 IdP 进行的身份验证。 API 管理不执行任何负载均衡,因此,应该将它与应用程序网关或反向代理等负载均衡器结合使用。 有关将 API 管理与应用程序网关配合使用的信息,请参阅将内部虚拟网络中的 API 管理与应用程序网关集成
  • Azure AD B2C 是在 Microsoft Entra ID 基础上构建的一项高度可用的全局标识管理服务,适用于面向使用者的应用程序。 它可纵向扩展到数亿个标识。 该解决方案使用的 IdP 就是它。 身份验证成功时会返回持有者令牌 (JWT)。
  • Azure 应用程序服务是用于构建、部署和扩展 Web 应用的完全托管服务。 可以使用.NET、.NET Core、Node.js、Java、Python 或 PHP 来构建应用。 应用可以在容器中或在 Windows 或 Linux 上运行。 在大型机迁移中,前端屏幕或 Web 界面可以编码为基于 HTTP 的 REST API。 它们可以像在大型机应用程序中那样进行隔离,并且可以是无状态的,以编排基于微服务的系统。
  • Azure 应用服务环境是应用程序服务的单租户部署环境。 通过该环境,可在完全隔离的专用环境中托管应用程序,从而安全地大规模运行应用程序服务应用。
  • Azure Kubernetes 服务 (AKS) 是用于运行容器化应用程序的 Microsoft 托管 Kubernetes 环境。
  • Azure Functions 是事件驱动的无服务器计算平台。 Azure Functions 在云中按需大规模运行。

方案详细信息

后端 API 是访问应用程序和数据的入口点,此处应该防范恶意应用程序和恶意用户。 在此处所述的体系结构中,Azure API 管理充当客户端和后端 API 之间的网关,并可通过多种方式帮助保护 API,包括:

  • 令牌验证
  • 基于声明的授权
  • SSL 证书验证
  • IP 限制
  • 限制
  • 速率限制
  • 请求和响应验证

可以使用来自 Microsoft 或其他供应商的任何 OpenID Connect 标识提供者 (IdP) 对客户端进行身份验证。 此解决方案使用 Azure AD B2C。 如果使用 OpenID Connect 以外的其他方式进行身份验证,在大多数情况下,可使用 Azure AD B2C 进行联合身份验证。 有关详细信息,请参阅将标识提供者添加到 Azure Active Directory B2C 租户

可能的用例

此体系结构解决了想要实现以下目标的组织的需求:

  • 保护后端 API 免受未经授权的用户的攻击。
  • 使用 API 管理功能(如带宽限制、速率限制和 IP 筛选)防止 API 重载。
  • 使用 Azure AD B2C 通过 OpenID Connect 进行身份验证,或与其他 IdP 进行联合身份验证,包括:
    • 第三方 IdP,例如 Ping 标识和 Computer Associates (CA) SiteMinder。
    • Facebook、Microsoft 帐户、Google、Twitter。
    • 支持 OAuth 1.0、OAuth 2.0 或 SAML 协议的 IdP。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

若要查看非公开领英个人资料,请登录领英。

后续步骤