【问题标题】:How to handle authentication between API and Client in Azure如何在 Azure 中处理 API 和客户端之间的身份验证
【发布时间】:2020-02-29 16:22:12
【问题描述】:

我不太确定该怎么称呼它,但基本上我有一个服务应用程序,它只提供一个 API,同时偶尔在后台调用外部 API 以保持数据更新。除了对外部 API 进行身份验证外,此应用没有其他身份验证。

然后,我有一个前端应用程序,它使用服务应用程序的 API 来获取数据并将其显示给用户,并且可以选择修改一些数据。此应用设置为针对 Azure AD 进行身份验证,并设置了应用角色以限制对各个部分的访问。

我将如何保护服务应用 API,以便只提供来自前端应用的调用,而其他一切都被 401 拒绝?

【问题讨论】:

  • 好吧,您需要在 API 上设置 Azure AD 承载令牌 (JWT) 身份验证。你的前端应用程序可以从 Azure AD 获取 API 的访问令牌,并将它们与请求一起传递。你可以在 Azure AD 中为 API 定义权限,并强制它们必须存在于令牌中。然后,您可以在 Azure AD 中控制允许哪些应用调用 API。 joonasw.net/view/defining-permissions-and-roles-in-aad
  • 我想,我的问题是,如何从 Blazor 服务器中的 Azure AD 获取访问令牌?
  • 有这样的非官方示例应用程序:github.com/jburman/BlazorGraphExample。您很可能需要与 msal.js 进行 JS 互操作。
  • 啊。因此,我无法使用登录 Blazor 应用程序时使用的相同令牌对 API 进行身份验证?
  • 不,您需要获取访问令牌。您的 Blazor 应用应获取的令牌是 Id 令牌,仅适用于 Blazor 应用。

标签: c# azure authentication authorization


【解决方案1】:

您可以通过将 OAuth 与 Azure AD 结合使用来保护 API。以下概述可以帮助您解决方案:

  1. 在 Azure AD 中注册一个应用程序来表示 API。 Reference

基本上在此步骤中,您将确保只有拥有权限的应用程序(您的应用程序)才能访问 API。

  1. 在 Azure AD 中注册另一个应用程序以代表客户端应用程序。 Reference

在此步骤中,您将创建另一个应用程序来代表您的应用程序,以便可以在 API 和您的应用程序之间建立信任。

  1. 在 Azure AD 中授予权限。 Reference

在此步骤中,您将授予应用访问 API 的权限。

  1. 利用客户端凭据流向您的 API 验证您的应用程序。 Reference

在此步骤中,您将使用 API 的 Azure AD 应用程序信息配置您的应用程序。使用该信息,您将检索访问令牌,并且您需要将此访问令牌传递给您的 API。

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 2021-02-02
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多