【问题标题】:Azure AD B2C Insufficient privileges to complete the operation while using Graph APIAzure AD B2C 使用 Graph API 时权限不足,无法完成操作
【发布时间】:2017-04-30 08:47:56
【问题描述】:

我以https://github.com/AzureADQuickStarts/B2C-WebApp-OpenIdConnect-DotNet为基础开始

在 Azure B2C 预览版中创建了登录配置文件。

登录流程与 MFA 完美配合,在 https://github.com/azureadquickstarts/b2c-azureblobstorage-client/ 的帮助下使用自定义页面。

CSS 和样式有效。但是我意识到,使用 Javascript 自动完成功能的注册表单会变得不那么繁琐。

B2C 因安全问题曾禁止 Javascript。

所以我用 B2C 流程填写了电子邮件/密码,然后决定在我原始项目的 mvc 路由中将其重定向到我自己的页面。这个使用 https://github.com/Azure-Samples/active-directory-dotnet-graphapi-web/blob/master/WebAppGraphAPI/Controllers/UsersController.cs 作为 Graph API 的灵感来源。

我可以通过

成功获取token
adClient = new ActiveDirectoryClient( serviceRoot, async () => await GetAppTokenAsync()); 

但是以下失败并出现“权限不足,无法完成”异常

userResult = (User)adClient.Users.GetByObjectId(userObjectID).ExecuteAsync().Result;

我尝试过以下https://social.msdn.microsoft.com/Forums/azure/en-US/6dd08794-ab89-4513-91e5-546c97a85adc/graph-client-throwing-insufficient-privileges-to-complete-the-operation-on-creating-ad-user?forum=WindowsAzureAD 以及尝试https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console/issues/27 powershell 技巧

powershell 失败并显示

C:\Users\Karan\Desktop\dev> $msolcred = Get-Credential cmdlet Get-Credential at command pipeline position 1 为以下参数提供值: Credential PS C:\Users\Karan\Desktop\dev> 连接-MsolService -credential $msolcred Connect-MsolService :引发了“http://Microsoft.Online.Administration.Automation.MicrosoftOnlineException”类型的异常。在 line:1 char:1 + Connect-MsolService -credential $msolcred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ + CategoryInfo : OperationStopped: (:) [Connect-MsolService], Mic rosoftOnlineException + FullyQualifiedErrorId : 0x800488D6,http://Microsoft.Online .Administration.Autom ation.ConnectMsolService .....

还尝试了https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet中提到的步骤

还在这里添加了 B2C AD 中的图形 API 权限“读/写目录”

还在 Windows Azure Active Directory 中勾选了更多选项

以及在旧门户中勾选。

【问题讨论】:

  • 您是否也点击了“授予权限”按钮?
  • 是的,我刚刚做了。仍然遇到相同的错误“权限不足,无法完成操作。”
  • 这需要一点时间(我想说最多 1 小时?)才能生效。如果它仍然不起作用,您可以将您的访问令牌复制到 jwt.calebb.net 并查看输出的屏幕截图。我想确认您是否没有得到您要求的范围。
  • 附加解码的JWT
  • 等了四天。仍然没有渗透权限

标签: azure azure-ad-b2c


【解决方案1】:

这个问题已经解决了。我必须创建一个新应用程序。对我的 B2C 生成的应用程序清楚地写着“不要修改”——我正在为此修改权限。所以我添加了一个新的应用程序并授予该读写目录。我的错。

【讨论】:

  • 请注意,当您使用此策略 *.com/questions/31619774/… 更新扩展属性时 - 然后不要使用新创建的应用程序的应用程序 ID,而是使用 b2c-extensions 的应用程序 ID-.. 不要修改应用程序