所以我正在尝试将mvc应用程序连接到AAD B2C,并检索当前用户组,以便我可以将它们添加到他们的角色中。不幸的是,我无法成功查询图表。
Insufficient privileges error when trying to access Azure Graph APIs
上面的链接基本上就是我所处的情况,除了我正在连接到B2C目录。就像我所知道的那样,我没有办法指定权限,因为问题的回答是建议的。有一个“键”部分,但它生成的键与常规AD应用生成的键非常不同。
当我尝试使用密钥时,我只是获得了不足的权限错误。
我也尝试在主要的常规AD中找到我的应用程序,并添加密钥和所有权限,但我也得到了相同的错误(并且似乎没有任何方式我可以看到以确定我是否均匀越来越近了)
为了增加混淆,有不同的方法可以访问Azure门户中注册的“应用程序”。我可以通过B2C设置或通过常规AD设置进入。在B2C方面,我可以生成密钥(但正如我所说,它们与AD端生成的密钥完全不同),但我无法使用权限做任何事情......没有选项存在。在AD方面,我实际上看到了我的1个B2C应用程序的两个应用程序...看起来有一个与B2C应用程序具有相同ID(但使用该密钥和权限什么都不做),而另一个,也没有似乎有任何有用的品质,我已经想到了。
我没有想法。我还能尝试什么?
我已经做了一些实验,发现如果我使用不正确的ID或秘密,我会收到相应的错误消息。因此,我认为我正确地“认证”。问题似乎是,正如错误消息所示,我的密钥没有足够的权限。
为此,我在“Windows Azure Active Directory”和“Microsoft Graph”下添加了每个可用权限 ...没有任何改进,我仍然无法获得所需的权限。我想我会添加所有可用的权限,看看这似乎对任何人都有帮助。
- 没有,有 NO 要添加的剩余权限,但我仍然收到权限不足的错误消息。
此外,使登录用户成为AD管理员,没有任何区别。
答案 0 :(得分:0)
您可能在流程中错过了所谓的管理员同意。基本上,它不足以使用门户授予权限(标记为“需要管理员”的权限),但具有管理员权限的用户应该同意该授权。棘手的是,当管理员用户登录时,这种同意不会自动显示(就像经常用户同意一样)。您必须将prompt=admin_consent
参数添加到您输入凭据的页面的URL,按Enter键,然后登录。在这种情况下,您将看到管理员同意,询问您是否要授予权限。
您可以在此处详细了解管理员同意:https://docs.microsoft.com/en-us/azure/active-directory/active-directory-devhowto-multi-tenant-overview#understanding-user-and-admin-consent。
我也在这里讨论这个问题:https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console/issues/38#issuecomment-264664883