【问题标题】:B2C Graph API - insufficient permissions even when Directory.ReadWrite.All is enabledB2C Graph API - 即使启用 Directory.ReadWrite.All 也没有足够的权限
【发布时间】:2020-07-06 03:51:29
【问题描述】:

我正在尝试通过 Postman 运行“更改密码”。

我使用应用程序 ID 和密码获取令牌

我可以从用户配置文件中读取数据没问题

我在 Azure 门户中授予 Graph API 权限

我再次生成令牌,在 jwt.io 中查看,示例

"Device.ReadWrite.All",
"Member.Read.Hidden",
"Directory.ReadWrite.All",
"Domain.ReadWrite.All",
"Application.ReadWrite.OwnedBy",
"Application.ReadWrite.All"
],

我发送

"password": "Test123456",
"forceChangePasswordNextLogin": false

https://graph.windows.net/[tenant]/users/[user]api-version=1.6

我仍然遇到以下问题:

    "code": "Authorization_RequestDenied",
    "message": {
        "lang": "en",
        "value": "Insufficient privileges to complete the operation."
    }

【问题讨论】:

  • 令牌中aud的值是多少?
  • @juunas - 00000002-0000-0000-c000-000000000000
  • 嗯,这很奇怪。通常应该是https://graph.windows.net。获取令牌时尝试将其用作resource
  • 不知道该放在哪里 - 这是我在邮递员中的 URL 目前的样子 login.microsoftonline.com/[tenantid]/oauth2/token

标签: azure-ad-b2c azure-ad-graph-api


【解决方案1】:

更改密码权限的启用方式与 AD Graph API 上的其他权限不同。

您需要在 B2C 租户本地设置租户管理员,然后运行以下详细说明的 powershell 命令:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet

【讨论】:

  • 我已经创建了该租户,否则根本无法获取用户个人资料信息。我还没有运行 powershell 命令,我会看看下一个
  • 昨晚我花了好几个小时才终于在上面的链接中找到了解决方案。唯一的区别可能是我在控制台应用程序中工作,所以我总是在该应用程序的上下文中打开,而不是在登录用户中打开。
  • 具体来说,必须将注册应用程序的服务主体分配给用户帐户管理员角色,该角色的角色标识符为fe930be7-5e62-47db-91af -98c3a49a38b1.
  • 其实b2c租户中的管理员修改B2C(消费者)的密码是没有必要的。目前,您不能使用应用程序权限来重置用户的密码。尝试获取具有委派权限的令牌。否则,您需要将用户帐户管理员角色分配给服务主体。
猜你喜欢
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2014-01-24
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
相关资源
最近更新 更多