标签: azure-oauth

使用 Azure AD 和应用角色保护 SPA 和 API

我正在构建一个 SPA 可以调用 API 的系统。SPA 以及 API 在 Azure AD 中使用需要将用户分配给它的应用程序注册来表示。

在分配过程中,用户还会被分配给应用程序注册公开的角色。可用的角色是SPA 和 API 应用程序注册中的Developer,我在这两个注册中为用户分配相同的角色。User

API 注册还公开 SPA 注册用于请求访问令牌的范围。

SPA 中的角色用于呈现不同的 UI 元素,具体取决于用户是否被分配DeveloperUser

一旦用户批准了 SPA 向 API 请求的范围,就可以调用 API。此访问令牌的声明aud是 API 的应用程序注册的 ID,它还包含Developer在加入步骤中分配的角色。

我认为这张图正确地代表了正在发生的事情: 在此输入图像描述

我有几个与此相关的问题,仅通过阅读文档很难弄清楚。

管理调用链中的角色(SPA -> API)

通过系统传播角色的正确方法是什么?所有应用程序注册是否需要具有相同的角色,并且用户在每个注册中手动分配角色?

或者我可以传播用户首次登录 SPA 时收到的角色吗?或者这是否会破坏 JWT 的安全性?我猜想这需要在每个应用程序注册中处理,因为没有什么可以阻止我修改传出请求并将角色设置为Admin

角色和范围

我发现这个答案部分地向我解释了这些概念。User.Read我正在构建一个内部系统,除了 OIDC提供的(电子邮件、oid 等)之外,实际上并不需要任何其他用户数据。SPA 请求此范围来显示登录的用户名。

除了用户提供的信息之外,我的 API 永远不会需要任何其他信息。在这种情况下我还需要示波器吗?
同意仅适用于范围吗?
是否knownClientApplicationspreAuthorizedApplications仅在使用范围时适用?

如果这是胡言乱语,我深表歉意,我已经阅读了太多文档,以至于我无法保持头脑清醒。

identity oauth azure azure-identity azure-oauth

5
推荐指数
1
解决办法
1093
查看次数

标签 统计

azure ×1

azure-identity ×1

azure-oauth ×1

identity ×1

oauth ×1