如果您的 API 不使用 MS Graph,是否必须在 Microsoft Entra ID 中“公开 API”?验证就足够了吗?

问题描述 投票:0回答:1

鉴于下面的场景,我不明白为什么需要在 Microsoft Entra ID 中的应用程序注册的“公开 API”部分下添加范围。

  1. 客户端使用 Microsoft Entra ID 登录前端 SPA,并获得不记名令牌。
  2. 客户端调用我的后端 API 并提供不记名令牌。
  3. 后端 API 验证令牌并通过解码 JWT 确认用户具有特定角色。
  4. 后端API连接到MS SQL数据库以检索数据并将其发送回客户端。

在这种情况下,我的后端不需要直接访问MS Graph。我只是希望通过验证不记名令牌来保护 API。

但是,我找到的所有说明都包括创建 API 范围并向特定角色授予应用程序权限。这不是只有当你的后端API需要直接请求MS Graph资源时才需要吗?

azure authentication jwt token
1个回答
0
投票

答案很简单,如果不需要,您不一定需要通过 Azure 应用程序注册公开 API。如果您的应用程序只需要用户登录并且没有需要定义的特殊/特定 API 范围(权限),则无需添加自定义 API 范围。只需验证登录后提供的访问令牌并执行必要的 API 操作即可。

但是,如果您想要/需要为 API 定义各种权限级别,例如“读取数据库”、“写入数据库”等,那么您可以通过 Azure Expose API 来添加您自己的自定义范围(权限)。然后,前端应用程序可以请求这些范围,以便将它们包含在访问令牌中,然后将其传递到您的 API,用于定义用户或应用程序拥有哪些权限。

很多很多文章对此都没有很好的解释,因为它似乎被假定为知识。如果您正在学习身份验证,应该更好地拼写出来。

© www.soinside.com 2019 - 2024. All rights reserved.