首页 > 解决方案 > 从 C# 控制台应用程序访问 Azure Active Directory 并获得“权限不足,无法完成操作”。错误信息

问题描述

我按照 Microsoft 的说明创建了一个企业应用程序,并将其注册为我的试用 Azure 实例中的 Web 应用程序。

我还按照 Microsft 文档向此应用添加了 AAD“应用程序”权限((即User.Read.AllUser.ReadWrite.AllDirectory.Read.AllDirectory.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 应用程序的权限不足以列出该应用程序的用户。

我试图搜索互联网以找到解决我的问题的可能解决方案。我发现了这个问题的许多实例,但问题及其解决方案似乎每次都有点不同。

我希望有人可以提供答案并引导我朝着正确的方向解决此访问问题。

提前致谢,

标签: c#azureazure-active-directory

解决方案


我正在研究我的问题,我在 Stackoverflow 上看到了与我的问题相似的以下文章。[ Graph API - 权限不足,无法完成操作

查看后,我意识到我缺少“Azure Active Directory Graph”API 的“Directory.Read.All”和“Directory.ReadWrite.All”权限。

我添加了这些权限,给予“管理员同意”并再次尝试。

有效!

但是,当我将这两个权限添加到我的应用程序时,会弹出一条信息性消息。

它建议我改用 Microsoft Graph API,即使我正在使用它并且无法访问 AAD 信息。

谢谢,


推荐阅读