【问题标题】:Change Azure AD B2C User Password with Graph API使用 Graph API 更改 Azure AD B2C 用户密码
【发布时间】:2018-01-16 13:44:30
【问题描述】:

我正在尝试使用 Sample Graph API 应用程序更改用户的密码,但我得到:

调用图形 API 响应时出错:

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

图形 API 请求:

PATCH /mytenant.onmicrosoft.com/users/some-guid?api-version=1.6 HTTP/1.1
client-request-id: ffd564d3-d716-480f-a66c-07b02b0e32ab
date-time-utc: 2017.08.10 03:04 PM

JSON 文件

{
    "passwordProfile": {
        "password": "Somepassword1$",
        "forceChangePasswordNextLogin": false
    }
}

我已经测试过更新用户的 displayName 并且效果很好。

{
    "displayName": "Joe Consumer"
}

AD 应用程序权限

我已经配置了my app permissions as described here.

【问题讨论】:

  • 能否请您发布此错误的相关 ID + 时间戳?
  • 我已经添加了。谢谢你的帮助! @DanielDobalian
  • 嘿@DanielDobalian,有什么更新吗?谢谢。
  • 你是如何授权graph api请求的?我的意思是你是怎么得到不记名令牌的?

标签: oauth-2.0 azure-active-directory azure-ad-b2c azure-ad-graph-api


【解决方案1】:

查看this article。好像有同样的症状。

解决方案 1:

如果您在调用仅包含读取权限的 API 时收到此错误,则必须在 Azure 管理门户中设置权限。

  • 转到 Azure 管理门户并单击 Active Directory。
  • 选择您的自定义 AD 目录。
  • 单击应用程序并选择您的应用程序。
  • 点击配置并向下滚动到“其他应用程序的权限”部分。
  • 为 Windows Azure Active Directory 提供所需的应用程序权限和委派权限。
  • 最后保存更改。

解决方案 2:

如果您在调用包含deletereset password 操作的API 时收到此错误,那是因为这些操作需要Company Administrator 的管理员角色。截至目前,您只能通过Azure AD Powershell module 添加此角色。

  1. 使用 Get-MsolServicePrincipal –AppPrincipalId 查找服务主体

    Get-MsolServicePrincipal | ft DisplayName, AppPrincipalId -AutoSize
    
  2. 使用 Add-MsolRoleMember 将其添加到Company Administrator 角色

    $clientIdApp = 'your-app-id'
    $webApp = Get-MsolServicePrincipal –AppPrincipalId $clientIdApp
    
    Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId
    

要通过 PowerShell 连接到您的 B2C 租户,您需要一个本地管理员帐户。 This blog post should help ,请参阅“解决方案”部分。

【讨论】:

  • 感谢@Parakh!我认为解决方案 1 适用于旧门户。请确认。我在 portal.azure.com 中没有看到这些选项
  • nvm,我已经确认,这是针对旧门户的。我已经授予“读写目录数据”的权限,如下所述:docs.microsoft.com/en-us/azure/active-directory-b2c/…
  • 解决方案 2 是解决方法。
  • 一件重要的事情!为了能够看到正确的目录,您需要创建 local Azure B2C 管理员(例如 admin@[tenant].onmicrosoft.com)并使用 Connect-MsolService 和他的 AzureAD 凭据登录PowerShell,否则由于目录不同,您将无法使用Get-MsolServicePrincipal 获取应用程序。请参阅here 中的重要部分。
【解决方案2】:

试试下面的设置,对我有用。

使用下面的 JSON

 {
  "accountEnabled": true,
  "signInNames": [
    {
      "type": "emailAddress",
      "value": "kart.kala1@test.com"
    }
  ],
  "creationType": "LocalAccount",
  "displayName": "Joe Consumer",
  "mailNickname": "joec",
  "passwordProfile": {
    "password": "P@$$word!",
    "forceChangePasswordNextLogin": false
  },
  "passwordPolicies": "DisablePasswordExpiration",
  "givenName": "Joe",
}

还要确保您为应用程序分配了用户帐户、管理员角色,这将允许它删除用户link here

【讨论】:

  • 您确定可以使用这些设置更改密码吗?您是否尝试使用上面的 json 更新用户?
  • 检查答案中的json
猜你喜欢
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多