【发布时间】: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