尝试使用图形 API 从 Azure Active Directory 获取组时 Authorization_RequestDenied

2023-12-12

我尝试使用 Graph API 获取有关 Azure Active Directory 组的信息,但不断收到“Authorization_RequestDenied”响应。

这个问题类似于尝试使用 Azure AD Graph API 获取登录用户的组成员身份时出现权限不足错误,但这个问题的答案对我不起作用。

这是我所做的:

  • 使用我的 Microsoft 帐户登录到 Azure 门户(例如[email protected])
  • 设置 Azure Active Directory 实例以进行测试。实例的域类似于examplehotmail247.onmicrosoft.com
  • 创建了一个用户([email protected])
  • 创建一些组,并使用户成为这些组的一部分
  • 创建了一个 ASP.NET 应用程序,配置为使用 OpenID Connect 对 AAD 进行身份验证。
  • 在 AAD 中注册应用程序,创建客户端密钥、回复 URL 等。
  • 修改了 AAD 中应用程序的清单,以便返回组成员身份声明。

身份验证部分工作正常。用户登录后,我可以看到我期望的所有信息(名称、ID 等),以及包含该用户所属的所有组的 ID 的声明。

到目前为止,一切都很好。

现在,我想将这些组 ID 转换为人类可读的组名称。为此,我正在使用Microsoft.Azure.ActiveDirectory.GraphClientNuGet 包,它提供了GetObjectsByObjectIdsAsync方法。这个方法似乎是一个包装getObjectsByObjectIds休息方法。

为了尝试使其正常工作,我做了以下操作:

  • 在 Azure 门户中,我已向我的应用程序授予“登录并读取用户配置文件”和“读取目录数据”权限。
  • 使用我的 Microsoft 帐户至少登录一次我的 ASP.NET 应用程序

我看到的情况:当我使用 Microsoft 帐户登录 ASP.NET 应用程序时,一切正常。但是,当我使用我创建的 AAD 帐户登录时([email protected]),它失败并出现以下错误:

[DataServiceClientException: {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"权限不足,无法完成操作。"},"requestId" :"1234e0bb-3144-4494-a5fb-12a937147bcf","日期":"2016-12-06T18:39:13"}}] System.Data.Services.Client.BaseAsyncResult.EndExecute(对象源,字符串方法,IAsyncResult asyncResult)+919 System.Data.Services.Client.QueryResult.EndExecuteQuery(对象源,字符串方法,IAsyncResult asyncResult)+116

直接使用 REST api 尝试等效查询(即排除 ASP.NET)会得到相同的结果。

那么我在这里缺少什么?

Update:我还向应用程序授予了以下委派权限(对 Windows Azure Active Directory):登录并读取用户配置文件、读取目录数据、以登录用户身份访问目录。然而,这并没有什么区别。

更新#2:我什至做了[email protected]AAD 实例的全局管理员,但仍然没有帮助。

更新#3:好的,首先需要澄清一下。用户登录后,我的 ASP.NET 应用程序从 OpenID Connect 流获取授权代码。获得代码后,我将使用它来交换访问令牌AcquireTokenByAuthorizationCodeAsync。访问令牌与用户绑定,因此我想依赖委托权限,而不是应用程序权限。


问题是,尽管在 Azure 门户中向我的 ASP.NET 应用程序授予了适当的委派权限,但用户从未有机会同意它们。

我开始在 azure 中为我的 ASP.NET 应用程序创建一个全新的应用程序注册,这就是我的发现:当用户第一次登录时,系统会要求他们同意所需的任何委派权限。但是,如果我在第一次登录后更改所需的委派权限,则用户下次登录时不会要求其同意(对于新需要的权限)。

这绝对不是我所期望的,所以我将就此提出一个新问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用图形 API 从 Azure Active Directory 获取组时 Authorization_RequestDenied 的相关文章

随机推荐

  • 尝试禁用浏览器的后退按钮

    我写了两个 HTML 文件 登录 html a href Home html Next Page a 首页 html a href Login html gt gt Prev Page a 我正在尝试禁用浏览器的后退按钮 如果我在 c
  • 绘图中的注释自动放置

    我有代码可以轻松地自动处理着色和绘制多个图 对我来说 我想让注释变得更容易 goal 如果注释 xy 与前一个注释冲突 请向上移动 直到与其他注释不发生冲突 如果有一个功能已经能够实现这一点 那将是一个梦想 但我找不到 否则 列出注释并在坐
  • 如何从流中准确读取一个字符?

    我有一个带有一些文本数据的流 可以是 ASCII UTF 8 Unicode 编码是已知的 我需要从流中准确读取一个字符 而不再前进流位置 StreamReader 是不合适的 因为它会积极地从流中预取数据 Ideas 如果您想一次一个字节
  • 正则表达式匹配确切的数字,如果它存在于字符串中则不匹配

    我的正则表达式 3 b Matches 103 134 256 3 我希望它只匹配唯一的 3 数字 3 将是一个动态数字 正则表达式必须匹配该确切数字 而不是其他数字 如果该数字存在于另一个数字 如 103 中 则它不能匹配 那么它不应该匹
  • 对 NHibernate 缓存搜索的影响,其结果包括映射为公式的计算值(例如排名)

    当在 NHibernate 中使用公式定义计算属性时 当公式根据查询限制 尤其是查询缓存 改变其结果时 会产生什么影响 更具体地说 请考虑以下简单的 C 类 public class Entity public Entity public
  • 使用 Linux binutils 设置 ELF 映像基地址的优雅方法?

    对于个人项目 我需要编写一个在非默认内存地址加载的可执行文件 从这个问题 我知道我可以设置 ELF 的入口地址并手动修改节地址 以便可执行文件有效地基于我选择的某个地址 然而 答案表明 只有当我不进行 glibc 初始化 这个项目需要它 时
  • 无序线程问题

    我问过关于锁定的问题here人们回答说我的锁实现没有问题 但我发现了问题 这是相同的锁实现 我得到了奇怪的结果 我希望看到数字从 1 开始 但它是从 5 开始 示例如下 class Program static object locker
  • asp.net mvc 不断用 .wml 覆盖 text/html 内容类型

    我正在开发一个可以在移动 手机 设备上查看的网站 我只是使用纯 HTML 4 01 没有什么特别的 除了诺基亚 Series 40 第 1 5 版之外 这些页面在我们测试过的所有移动浏览器上都呈现良好 仔细观察 IIS 似乎会自动渲染内容类
  • BitBucket - 直接添加到开发分支而不是主分支

    我们正在将 SCM 更改为 BitBucket 目前我们使用 Clearcase SCM 我们在不同阶段 流中拥有代码 开发 UAT 和生产 其中开发具有开发人员当前正在处理的代码 UAT 已完成由 BP 测试的更改 而生产具有部署到生产的
  • 为文本区域内的线条着色

    有没有办法让textarea显示颜色的线条 我想要实现的是每隔一行都着色 即白色 灰色 白色 灰色 白色 灰色 以获得更好的可读性 用户应该写很多东西 比如 输入名称 每一个都从新行开始 无论如何 我确实使用 jQuery 所以如果他们为此
  • 带返回值的跨域弹窗

    这是设置 我在两个不同的域上有两个网站 www website1 com www someotherwebsite com 这就是我想做的 当用户开机时www website1 com然后单击一个链接 我想要一个弹出窗口显示www some
  • 使用 gdb 在多屏幕窗口中调试 MPI

    如果我有一个 MPI 程序 想要使用 gdb 进行调试 同时能够查看所有单独进程的输出 我可以使用 mpirun n
  • DbContext.OnConfiguring 没有被调用并且在 ASP.NET Core 中表现得很奇怪

    在我的 asp net core 项目中我有一个ReadingContext类派生自DbContext 根据文件OnConfiguring应该为每个实例调用DbContext即被创建 但就我而言 仅当我在调试时检查实例时才会调用它 我里面有
  • 如何在使用 AMD 时在 Backbone.js 中加载引导模型 (require.js)

    Backbone js 文档建议以这种方式加载引导模型 但这是一个不能使用的模式AMD 方法 使用 require js 唯一可能的解决方案是声明存储 JSON 数据的全局变量并稍后在相关初始化方法中使用该变量 有没有更好的方法这样做 没有
  • 为什么有些 Gulp 流默认“流动”,而另一些则不流动?

    考虑这两个 gulp 任务 gulp task src function done gulp src docs on end function console log ending done gulp task dest function
  • Firebase Cloud Functions 未记录,似乎未部署

    Firebase Cloud Functions 自大约 10 年后就没有记录过 今天下午4点 它们似乎也没有正确部署 但在没有日志的情况下很难判断 网站上以及使用 firebase 函数 日志 运行 cli 时缺少日志 有人知道出了什么问
  • 最小年龄验证 laravel

    我想验证用户信息 例如出生日期 因为我在验证中使用了以下语句行 但是如何使其动态 以便用户的最低年龄可以为 13 岁 低于该年龄的用户无法注册 return Validator make data first name gt require
  • 如何将按钮的DataContext更改为父级DataContext?

    我在 WPF 中有 2 个课程 Meeting People 在会议中我有 2ObservableCollections AttendingMeeting and NotAttendingMeeting包含People objects 在
  • 将数组类型导入hana?

    我正在使用 CSV 文件将数据导入 SAP HANA 当我尝试导入具有数组类型的列时 会导致以下错误 ARRAY 类型与 PARAMETER TYPE 不兼容 例如 CREATE COLUMN TABLE SCHEMA TABLE ID I
  • 尝试使用图形 API 从 Azure Active Directory 获取组时 Authorization_RequestDenied

    我尝试使用 Graph API 获取有关 Azure Active Directory 组的信息 但不断收到 Authorization RequestDenied 响应 这个问题类似于尝试使用 Azure AD Graph API 获取登