当前位置: 首页 > 知识库问答 >
问题:

通过在Azure AD中使用代表流来限制用户范围

宗政兴发
2023-03-14

我有一个SPA React应用程序,它使用MSAL登录用户并获取令牌以查询MS Graph。当前,创建用户时,他/她可以有两个不同的角色,即:

  • 管理员
  • 查看器

照这样,每个用户都可以从AAD获得相同的范围——无论他们是一个角色还是另一个角色。

这带来了一个问题,因为任何用户在调用MS Graph时都可能拥有相同的权限,即他们可以自己获取令牌并请求具有完整作用域的Graph。

查看器角色应该只能具有“User.Read”作用域,而管理员应该能够更改Azure AD的各个方面。

此外,管理员应该能够在MS graph中执行委派权限不支持的操作,即创建新用户。

以下内容让我认为我可能需要重新思考用户从MS graph请求资源的方式——这让我认为代表流将是一个有趣的选择。

正如我想象的那样,流程将如下所示(从用户登录并请求在我的SPA中创建新用户开始)

  1. 用户在我的SPA中使用MSAL登录

由于我对这个世界相当陌生,我想知道我的思维方式是否有意义。特别是,我很好奇,是否真的可以代表我的Web API中仅具有“User.ReadWrite.All”、“Directory.ReadWrite.All”作用域的用户请求提升权限。

此外,我有理由对解决上述问题的其他方法提出任何建议。

共有1个答案

景品
2023-03-14

范围(委托权限)适用于应用程序,而不是用户。从根本上说,无论用户在其令牌中获得什么范围,他们都不能做他们还不能做的任何事情。Microsoft Graph API检查范围以检查应用程序的权限,然后检查用户的权限以查看他们是否也能够执行操作。因此,用户永远无法通过范围提升他们的权限。

如果您有自己的任何API,您也应该以类似的方式处理授权。如果使用范围,还要检查用户的权限。如果有应用程序权限(具有成员类型应用程序的应用程序角色),则没有用户,因此您的API只会检查这些权限。这就是为什么如果您的后端使用应用程序权限而不是代表流,您需要格外小心授权的原因;由于它们不包括用户,因此可以允许他们通过您的应用程序提升权限。

 类似资料:
  • 问题内容: 是否存在Java 8流操作来限制(可能是无限的)Stream直到第一个元素与谓词不匹配? 在Java 9中,我们可以takeWhile像下面的示例那样使用它来打印所有小于10的数字。 由于Java 8中没有这样的操作,以一般方式实现它的最佳方法是什么? 问题答案: 这样的操作在Java 8中应该是可能的,但不一定能有效地完成-例如,您不必并行化这样的操作,因为您必须按顺序查看元素。 该

  • 本文向大家介绍通过限制Linux中的用户进程来防止fork炸弹,包括了通过限制Linux中的用户进程来防止fork炸弹的使用技巧和注意事项,需要的朋友参考一下 一个叉炸弹是针对基于Linux系统的拒绝服务(DoS)攻击。它利用fork操作创建无限进程,被称为“兔子病毒或兔子”。系统进程会不断复制自身以耗尽可用的系统资源,从而导致资源不足,系统变慢或崩溃。本文提供了有关–如何防止Linux系统中的f

  • 问题内容: 在下面的代码中,您将看到它询问“ shift”值。我的问题是我想将输入限制为1到26。 我如何轻松做到这一点? 问题答案: 使用循环不断询问他们的输入,直到收到您认为有效的信息: 如果您收到一个呼叫(例如,如果他们键入),您还希望在呼叫周围有一个障碍。 请注意,如果您使用Python 2.x,则需要使用而不是。后者将尝试将输入解释为Python代码-可能非常糟糕。

  • 问题内容: 在程序中使用用户身份验证的代理的最佳/最简便方法是什么?我目前有这个,但是打开浏览器时我需要输入用户名和密码。 问题答案: 您可以使用Proxy Auto auth插件实现相同的功能 使用以下扩展程序下载扩展程序 https://chrome.google.com/webstore/detail/get- crx/dijpllakibenlejkbajahncialkbdkjc/rel

  • 我对Hadoop和MapReduce完全陌生,正在努力完成它。我正在尝试用python开发一个mapduce应用程序,在这个应用程序中,我使用来自2. CSV文件的数据。我只是在mapper中读取这两个文件,然后将文件中的键值对打印到sys.stdout 当我在一台机器上使用它时,该程序运行正常,但是使用Hadoop流式处理时,我遇到了错误。我认为我在Hadoop上的映射器中读取文件时犯了一些错误