c# - 从 C# 控制台应用程序访问 Azure Active Directory 并获得“权限不足,无法完成操作”。错误信息
问题描述
我按照 Microsoft 的说明创建了一个企业应用程序,并将其注册为我的试用 Azure 实例中的 Web 应用程序。
我还按照 Microsft 文档向此应用添加了 AAD“应用程序”权限((即User.Read.All、User.ReadWrite.All、Directory.Read.All、Directory.ReadWrite.All))。[ https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=http][1]
然后我创建了一个小型 C# 控制台应用程序来访问和列出我在此 Web 应用程序中创建的测试用户。
我可以连接 Azure Active Directory 并对其进行身份验证,并从中接收安全令牌。尽管如此,即使我为此 Azure 应用程序授予了必要的权限,我也无法从我的应用程序中收到测试用户列表。
收到不记名令牌后,程序终止并显示以下错误消息:
{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"权限不足,无法完成操作。 "},"requestId":"400231dd -cd3f-4789-99ee-ab9cc3ffb95e","日期":"2020-01-22T21:00:00"}}
我相信我的代码正在按预期工作,因为我得到了不记名令牌。但是,我赋予 Azure 应用程序的权限不足以列出该应用程序的用户。
我试图搜索互联网以找到解决我的问题的可能解决方案。我发现了这个问题的许多实例,但问题及其解决方案似乎每次都有点不同。
我希望有人可以提供答案并引导我朝着正确的方向解决此访问问题。
提前致谢,
解决方案
我正在研究我的问题,我在 Stackoverflow 上看到了与我的问题相似的以下文章。[ Graph API - 权限不足,无法完成操作
查看后,我意识到我缺少“Azure Active Directory Graph”API 的“Directory.Read.All”和“Directory.ReadWrite.All”权限。
我添加了这些权限,给予“管理员同意”并再次尝试。
有效!
但是,当我将这两个权限添加到我的应用程序时,会弹出一条信息性消息。
它建议我改用 Microsoft Graph API,即使我正在使用它并且无法访问 AAD 信息。
谢谢,
推荐阅读
- kernel - 从引导加载程序加载内核
- javascript - Regexp - match specific word allowing special characters
- ruby - 将 site.tags 中的标签/键转换为 jekyll 中的数组
- azure - Azure 函数 prop_status 失败
- php - Composer 安装出错 - 无法扫描 /vendor 目录中库依赖项中的类
- xaml - 定义 Shell.TitleView,同时在 shell 中保留选项卡的标题文本,但似乎以不同的字体显示
- java - 如何从 Android 本地存储中获取媒体文件(图像、视频、音频)?
- angular - 如何在 mat-menu 中设置空消息的样式?
- c# - 如何从 Oracle 数据库获取定期更新到客户端(轮询除外)?
- push-notification - 如何正确处理注册用户的登录/注销而不向注销用户发送通知?