我正在构建一个 SPA 可以调用 API 的系统。SPA 以及 API 在 Azure AD 中使用需要将用户分配给它的应用程序注册来表示。
在分配过程中,用户还会被分配给应用程序注册公开的角色。可用的角色是SPA 和 API 应用程序注册中的和Developer,我在这两个注册中为用户分配相同的角色。User
API 注册还公开 SPA 注册用于请求访问令牌的范围。
SPA 中的角色用于呈现不同的 UI 元素,具体取决于用户是否被分配Developer或User。
一旦用户批准了 SPA 向 API 请求的范围,就可以调用 API。此访问令牌的声明aud是 API 的应用程序注册的 ID,它还包含Developer在加入步骤中分配的角色。
我有几个与此相关的问题,仅通过阅读文档很难弄清楚。
管理调用链中的角色(SPA -> API)
通过系统传播角色的正确方法是什么?所有应用程序注册是否需要具有相同的角色,并且用户在每个注册中手动分配角色?
或者我可以传播用户首次登录 SPA 时收到的角色吗?或者这是否会破坏 JWT 的安全性?我猜想这需要在每个应用程序注册中处理,因为没有什么可以阻止我修改传出请求并将角色设置为Admin。
角色和范围
我发现这个答案部分地向我解释了这些概念。User.Read我正在构建一个内部系统,除了 OIDC提供的(电子邮件、oid 等)之外,实际上并不需要任何其他用户数据。SPA 请求此范围来显示登录的用户名。
除了用户提供的信息之外,我的 API 永远不会需要任何其他信息。在这种情况下我还需要示波器吗?
同意仅适用于范围吗?
是否knownClientApplications且preAuthorizedApplications仅在使用范围时适用?
如果这是胡言乱语,我深表歉意,我已经阅读了太多文档,以至于我无法保持头脑清醒。